工具栏和导航

时间:2015-09-13 21:02:45

标签: android android-fragments toolbar navigationview

项目具有工具栏的活动。动态变化片段中的活动。根据片段应该更改内容工具栏。 转向第二个片段应该出现在工具栏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。 怎么解决?     附:对不起英文:(

1 个答案:

答案 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;
    }