活动中的Android抽屉和后退按钮

时间:2014-09-02 01:37:30

标签: android android-activity navigation-drawer

我有一种情况,当我点击导航抽屉项目时,片段会启动一个活动。

public class CalculateFareFragment extends Fragment {
    View rootView;

    @Override
    public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        Intent intent = new Intent(getActivity().getApplicationContext(), CalculateFareActivity.class);
        startActivity(intent);
        return null;
    }

在活动中,当我按下后退按钮时,设备上的屏幕会闪烁并再次显示相同的活动。第二次按后退按钮将我带到应用程序的默认屏幕。

有没有办法克服这种行为,所以我不需要按两次后退按钮?

编辑:在@spurdow的建议之后,我设法添加了ToBackStack(null)

android.app.FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.content_frame, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();

我仍然没有看到行为发生任何变化。还有什么遗漏吗?

1 个答案:

答案 0 :(得分:0)

如果你想管理后退按钮,你必须使用onBackPressed()类来管理它:

@Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } }

并且在片段内调用活动是在它们的视图之间切换的常规方式,因此如果要管理导航抽屉项目选择,则有一个类实现如下: 例如,

@SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); if (id == R.id.nav_photos) { // Handle the camera action //setContentView(R.layout.myaccount); } else if (id == R.id.nav_myaccount) { setContentView(R.layout.activity_myaccount2); // } else if (id == R.id.nav_logout) { UserLocalStore loginuser = new UserLocalStore(this); loginuser.clearUserData(); finish(); startActivity(new Intent(getApplicationContext(), MainActivity.class)); } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; }