package shts.jp.android.nogifeed.activities; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.NavigationView; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.MenuItem; import android.view.View; import shts.jp.android.nogifeed.R; import shts.jp.android.nogifeed.fragments.AllFeedListFragment; import shts.jp.android.nogifeed.fragments.AllMemberGridListFragment; import shts.jp.android.nogifeed.fragments.CalenderFragment; import shts.jp.android.nogifeed.fragments.FavoriteMemberFeedListFragment; import shts.jp.android.nogifeed.fragments.NewsListFragment; import shts.jp.android.nogifeed.fragments.SettingsFragment; import shts.jp.android.nogifeed.utils.PreferencesUtils; public class TopActivity extends AppCompatActivity { private static final String TAG = TopActivity.class.getSimpleName(); private DrawerLayout drawerLayout; private NavigationView navigationView; private Toolbar toolbar; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_top); toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setNavigationIcon(R.drawable.ic_menu_white_24dp); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { drawerLayout.openDrawer(navigationView); } }); drawerLayout = (DrawerLayout) findViewById(R.id.drawer); navigationView = (NavigationView) findViewById(R.id.navigation); navigationView.setNavigationItemSelectedListener( new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem menuItem) { drawerLayout.closeDrawers(); final int id = menuItem.getItemId(); if (id == getLastSelectedMenuId()) { return false; } setupFragment(id); return false; } }); setupFragment(getLastSelectedMenuId()); } private int getLastSelectedMenuId() { return PreferencesUtils.getInt(this, "pre-fragment", R.id.menu_all_feed); } private void setLastSelectedMenuId(int id) { PreferencesUtils.setInt(this, "pre-fragment", id); } private void setupFragment(int id) { Fragment fragment = null; switch (id) { case R.id.menu_all_feed: fragment = new AllFeedListFragment(); break; case R.id.menu_fav_member_feed: fragment = new FavoriteMemberFeedListFragment(); break; case R.id.menu_member: fragment = AllMemberGridListFragment.newInstance( AllMemberGridListFragment.Type.ALL_MEMBER); break; case R.id.menu_news: fragment = new NewsListFragment(); break; case R.id.menu_calender: fragment = CalenderFragment.newInstance(); break; case R.id.menu_settings: fragment = new SettingsFragment(); break; case R.id.menu_about_app: case R.id.menu_request: case R.id.menu_lisences: startActivity(OtherMenuActivity.getStartIntent(this, id)); return; default: Log.e(TAG, "failed to change fragment"); return; } navigationView.getMenu().findItem(id).setChecked(true); toolbar.setTitle(navigationView.getMenu().findItem(id).getTitle()); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.container, fragment, fragment.getClass().getSimpleName()); ft.commit(); setLastSelectedMenuId(id); } @Override public void onBackPressed() { // カレンダーはWebViewなのでバックキーの消化判定を行なう CalenderFragment calenderFragment = (CalenderFragment) getSupportFragmentManager().findFragmentByTag( CalenderFragment.class.getSimpleName()); if (calenderFragment != null) { if (calenderFragment.isVisible()) { if (calenderFragment.goBack()) { return; } } } super.onBackPressed(); } }