项目具有工具栏的活动。动态变化片段中的活动。根据片段应该更改内容工具栏。 转向第二个片段应该出现在工具栏nazat箭头中,该箭头返回到前一个片段。
public class StartPageActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private Toolbar mToolbar;
private NavigationView mNavigationView;
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle drawerToggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start_page_activity);
setTitle("ForgetFul");
getFragment(new MainFragment());
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mNavigationView = (NavigationView) findViewById(R.id.main_drawer);
mNavigationView.setNavigationItemSelectedListener(this);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_widget);
drawerToggle
= new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, R.string.drawer_open, R.string.drawer_close);
mDrawerLayout.setDrawerListener(drawerToggle);
drawerToggle.syncState();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
Log.i("Activity", "Setting");
return true;
}
if (android.R.id.home == id) {
Log.i("One", "Dude");
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
drawerToggle.onConfigurationChanged(newConfig);
}...
在活动中从开始显示MainFragment。 在第二个活动中,我使用以下代码:
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
“向上”箭头出现,但当我点击箭头时,所有时间都打开NavigationView。 怎么解决? 附:对不起英文:(
答案 0 :(得分:0)
试试这个。
首先,删除implements NavigationView.OnNavigationItemSelectedListener
,并注释掉覆盖的方法和变量。
然后覆盖Activity的onBackPressed()方法,如下所示:
@Override
public void onBackPressed() {
FragmentManager fragmentManager = getFragmentManager();
if (fragmentManager.getBackStackEntryCount() != 0) {
fragmentManager.popBackStack();
} else {
super.onBackPressed();
}
}
这将确保在按返回键时显示先前的片段。
然后,只需在onOptionsItemSelected()方法中调用它:
if (id == android.R.id.home) {
onBackPressed();
return true;
}