diff --git a/app/build.gradle b/app/build.gradle
index e8a2bae..cc07415 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -25,6 +25,12 @@ android {
}
dependencies {
+
+ def nav_version = "2.1.0"
+
+ implementation "androidx.navigation:navigation-fragment:$nav_version"
+ implementation "androidx.navigation:navigation-ui:$nav_version"
+
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.annotation:annotation:1.1.0'
implementation 'com.google.android.material:material:1.1.0'
diff --git a/app/src/main/java/io/anycopy/googleplusdemo/MainActivity.java b/app/src/main/java/io/anycopy/googleplusdemo/MainActivity.java
index 4233361..5244405 100644
--- a/app/src/main/java/io/anycopy/googleplusdemo/MainActivity.java
+++ b/app/src/main/java/io/anycopy/googleplusdemo/MainActivity.java
@@ -1,175 +1,18 @@
package io.anycopy.googleplusdemo;
import android.os.Bundle;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import androidx.annotation.NonNull;
-import androidx.appcompat.app.ActionBarDrawerToggle;
+import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.Toolbar;
-import androidx.core.view.GravityCompat;
-import androidx.drawerlayout.widget.DrawerLayout;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentPagerAdapter;
-import androidx.viewpager.widget.ViewPager;
-
-import com.google.android.material.bottomnavigation.BottomNavigationView;
-import com.google.android.material.navigation.NavigationView;
-import com.google.android.material.snackbar.Snackbar;
public class MainActivity extends AppCompatActivity {
- private ViewPager viewPager;
- private BottomNavigationView navigation;
- private Toolbar toolbar;
- private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
- = new BottomNavigationView.OnNavigationItemSelectedListener() {
-
- @Override
- public boolean onNavigationItemSelected(@NonNull MenuItem item) {
- toolbar.setTitle(item.getTitle());
- switch (item.getItemId()) {
- case R.id.navigation_home:
- viewPager.setCurrentItem(0);
- return true;
- case R.id.navigation_dashboard:
- viewPager.setCurrentItem(1);
- return true;
- case R.id.navigation_notifications:
- viewPager.setCurrentItem(2);
- return true;
- }
- return false;
- }
- };
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.snack_bar, menu);
- return super.onCreateOptionsMenu(menu);
- }
-
@Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.menu_show_snack_bar:
- showSnackBar();
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
-
- }
-
- private void showSnackBar() {
- Snackbar.make(navigation, "Some text", Snackbar.LENGTH_LONG).show();
-
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- toolbar = findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
- viewPager = findViewById(R.id.view_pager);
- GooglePlusFragmentPageAdapter adapter = new GooglePlusFragmentPageAdapter(getSupportFragmentManager());
- viewPager.setAdapter(adapter);
- viewPager.setOffscreenPageLimit(adapter.getCount() - 1);
- navigation = findViewById(R.id.navigation);
- navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
- bindNavigationDrawer();
- initTitle();
- }
-
- private void initTitle() {
- toolbar.post(() -> toolbar.setTitle(navigation.getMenu().getItem(0).getTitle()));
- }
-
- private void bindNavigationDrawer() {
-
-
- DrawerLayout drawer = findViewById(R.id.drawer_layout);
- ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
- this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
- drawer.addDrawerListener(toggle);
- toggle.syncState();
-
- NavigationView navigationView = findViewById(R.id.nav_view);
- navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
- @Override
- public boolean onNavigationItemSelected(@NonNull MenuItem item) {
- // Handle navigation view item clicks here.
- int id = item.getItemId();
- if (id == R.id.nav_tool) {
- showToolSnackBar();
- } else if (id == R.id.nav_share) {
- showShareSnackBar();
- } else if (id == R.id.nav_gallery) {
- showGallerySnackBar();
- } else if (id == R.id.nav_send) {
- showSendSnackBar();
- }
- DrawerLayout drawer = findViewById(R.id.drawer_layout);
- drawer.closeDrawer(GravityCompat.START);
- return true;
- }
-
-
- });
- }
-
- private void showSendSnackBar() {
- Snackbar.make(navigation, "Send", Snackbar.LENGTH_SHORT).show();
-
- }
-
- private void showGallerySnackBar() {
- Snackbar.make(navigation, "Gallery", Snackbar.LENGTH_SHORT).show();
-
- }
-
- private void showToolSnackBar() {
- Snackbar.make(navigation, "Tool", Snackbar.LENGTH_SHORT).show();
- }
-
- private void showShareSnackBar() {
- Snackbar.make(navigation, "Share", Snackbar.LENGTH_SHORT).show();
- }
-
- public void onFabClicked(View view) {
- showShareSnackBar();
- }
-
-
- private static class GooglePlusFragmentPageAdapter extends FragmentPagerAdapter {
-
-
- public GooglePlusFragmentPageAdapter(FragmentManager fm) {
- super(fm);
- }
-
- @NonNull
- @Override
- public Fragment getItem(int position) {
- switch (position) {
- case 0:
- return HomeFragment.newInstance(1);
- case 1:
- return DashboardFragment.newInstance("Tony");
- case 2:
- return NotificationFragment.newInstance();
- default:
- throw new RuntimeException("Not supported");
- }
- }
-
- @Override
- public int getCount() {
- return 3;
- }
+ getSupportFragmentManager().beginTransaction()
+ .replace(R.id.fl_layout, new MainFragment())
+ .commitNow();
}
}
diff --git a/app/src/main/java/io/anycopy/googleplusdemo/MainFragment.java b/app/src/main/java/io/anycopy/googleplusdemo/MainFragment.java
new file mode 100644
index 0000000..bee63b5
--- /dev/null
+++ b/app/src/main/java/io/anycopy/googleplusdemo/MainFragment.java
@@ -0,0 +1,187 @@
+package io.anycopy.googleplusdemo;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.ActionBarDrawerToggle;
+import androidx.appcompat.widget.Toolbar;
+import androidx.core.view.GravityCompat;
+import androidx.drawerlayout.widget.DrawerLayout;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentPagerAdapter;
+import androidx.viewpager.widget.ViewPager;
+
+import com.google.android.material.bottomnavigation.BottomNavigationView;
+import com.google.android.material.navigation.NavigationView;
+import com.google.android.material.snackbar.Snackbar;
+
+public class MainFragment extends Fragment implements BottomNavigationView.OnNavigationItemSelectedListener {
+
+ private ViewPager viewPager;
+ private BottomNavigationView navigation;
+ private Toolbar toolbar;
+
+ private DrawerLayout drawer;
+ private NavigationView navigationView;
+
+ @Override
+ public void onAttach(@NonNull Context context) {
+ super.onAttach(context);
+ setHasOptionsMenu(true);
+ }
+
+ @Override
+ public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
+ super.onCreateOptionsMenu(menu, inflater);
+ inflater.inflate(R.menu.snack_bar, menu);
+ }
+
+ @SuppressWarnings("SwitchStatementWithTooFewBranches")
+ @Override
+ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.menu_show_snack_bar:
+ showSnackBar();
+ return true;
+ default:
+ return super.onOptionsItemSelected(item);
+ }
+
+ }
+
+ private void showSnackBar() {
+ Snackbar.make(navigation, "Some text", Snackbar.LENGTH_LONG).show();
+
+ }
+
+ @Nullable
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.fragment_main, container, false);
+ }
+
+ @Override
+ public void onViewCreated(@NonNull View rootView, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(rootView, savedInstanceState);
+ toolbar = rootView.findViewById(R.id.toolbar);
+ viewPager = rootView.findViewById(R.id.view_pager);
+ drawer = rootView.findViewById(R.id.drawer_layout);
+ navigationView = rootView.findViewById(R.id.nav_view);
+ drawer = rootView.findViewById(R.id.drawer_layout);
+ rootView.findViewById(R.id.floating_action_button).setOnClickListener(view -> onFabClicked());
+ GooglePlusFragmentPageAdapter adapter = new GooglePlusFragmentPageAdapter(getChildFragmentManager());
+ viewPager.setAdapter(adapter);
+ viewPager.setOffscreenPageLimit(adapter.getCount() - 1);
+ navigation = rootView.findViewById(R.id.navigation);
+ navigation.setOnNavigationItemSelectedListener(this);
+ bindNavigationDrawer();
+ initTitle();
+ }
+
+
+ private void initTitle() {
+ toolbar.setTitle(navigation.getMenu().getItem(0).getTitle());
+ }
+
+ private void bindNavigationDrawer() {
+
+
+ ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
+ requireActivity(), drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
+ drawer.addDrawerListener(toggle);
+ toggle.syncState();
+
+ navigationView.setNavigationItemSelectedListener(item -> {
+ // Handle navigation rootView item clicks here.
+ int id = item.getItemId();
+ if (id == R.id.nav_tool) {
+ showToolSnackBar();
+ } else if (id == R.id.nav_share) {
+ showShareSnackBar();
+ } else if (id == R.id.nav_gallery) {
+ showGallerySnackBar();
+ } else if (id == R.id.nav_send) {
+ showSendSnackBar();
+ }
+ drawer.closeDrawer(GravityCompat.START);
+ return true;
+ });
+ }
+
+ private void showSendSnackBar() {
+ Snackbar.make(navigation, "Send", Snackbar.LENGTH_SHORT).show();
+
+ }
+
+ private void showGallerySnackBar() {
+ Snackbar.make(navigation, "Gallery", Snackbar.LENGTH_SHORT).show();
+
+ }
+
+ private void showToolSnackBar() {
+ Snackbar.make(navigation, "Tool", Snackbar.LENGTH_SHORT).show();
+ }
+
+ private void showShareSnackBar() {
+ Snackbar.make(navigation, "Share", Snackbar.LENGTH_SHORT).show();
+ }
+
+ public void onFabClicked() {
+ showShareSnackBar();
+ }
+
+
+ private static class GooglePlusFragmentPageAdapter extends FragmentPagerAdapter {
+
+
+ public GooglePlusFragmentPageAdapter(FragmentManager fm) {
+ super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
+ }
+
+ @NonNull
+ @Override
+ public Fragment getItem(int position) {
+ switch (position) {
+ case 0:
+ return HomeFragment.newInstance(1);
+ case 1:
+ return DashboardFragment.newInstance("Tony");
+ case 2:
+ return NotificationFragment.newInstance();
+ default:
+ throw new RuntimeException("Not supported");
+ }
+ }
+
+ @Override
+ public int getCount() {
+ return 3;
+ }
+ }
+
+ @Override
+ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
+ toolbar.setTitle(item.getTitle());
+ switch (item.getItemId()) {
+ case R.id.navigation_home:
+ viewPager.setCurrentItem(0);
+ return true;
+ case R.id.navigation_dashboard:
+ viewPager.setCurrentItem(1);
+ return true;
+ case R.id.navigation_notifications:
+ viewPager.setCurrentItem(2);
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 8b74c77..76021fe 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,74 +1,9 @@
-
+ android:layout_height="match_parent">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml
new file mode 100644
index 0000000..3d3b576
--- /dev/null
+++ b/app/src/main/res/layout/fragment_main.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml
new file mode 100644
index 0000000..c8384f7
--- /dev/null
+++ b/app/src/main/res/navigation/nav_graph.xml
@@ -0,0 +1,5 @@
+
+
+
+
\ No newline at end of file