登录和导航抽屉之间onBackpress中的问题

时间:2017-05-05 13:43:52

标签: android login navigation-drawer android-navigation-drawer onbackpressed

有两个活动1.登录活动和2.navigation活动所有碎片都在......两个活动中的onBackPress就像

1.登录活动:

@Override
public void onBackPressed() {
    Intent a = new Intent(Intent.ACTION_MAIN);
    a.addCategory(Intent.CATEGORY_HOME);
    a.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(a);
    super.onBackPressed();

}

和2. ModuleActivity(NavigationDrawer):

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
        try {
            FragmentManager fragmentManager = getSupportFragmentManager();
            Fragment fragment = fragmentManager.findFragmentByTag("Home");
            if (fragment != null) {
                if (fragment.isVisible()) {
                    this.exit = true;
                    Toast.makeText(this, "Press Back again to Exit", Toast.LENGTH_SHORT).show();
                    Intent a = new Intent(Intent.ACTION_MAIN);
                    a.addCategory(Intent.CATEGORY_HOME);
                    a.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(a);

                }
            } else {
                fragment = Frag_home.class.newInstance();
                getFragmentManager().popBackStack();
                fragmentManager.beginTransaction().replace(R.id.content_frame, fragment, "Home").commit();
                displaySelectedScreen(R.id.nav_home);

            }
        } catch (Exception e) {

        }

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                exit = false;
            }
        }, 2000);

    }

现在,当我们登录时,它将直接转移到活动模块并再次注销,所以现在我们正在登录活动...现在在后面按下登录活动已关闭或退出成功但是当我们再次点击应用程序时它直接获取模块活动,而不是登录活动然后再次在backpress它退出活动,当我们再次启动应用程序现在它打开登录页面...不知道为什么它直接导航modulepage.Worst错误或我们可以说小但很大的错误。

这是我在登录时管理会话的方式:

if (login.getInt("session", 0) == 1) {
        Intent i = new Intent(Login.this, ModulesActivity.class);
        startActivity(i);
        Log.e("hello", "hello" );
        finish();
    } else {
        checkpermission();
        main();
    }
 }

并退出:

  final SharedPreferences login = getSharedPreferences(
                                        "Login", ModulesActivity.MODE_PRIVATE);
                                SharedPreferences.Editor editor = login.edit();
                                editor.putInt("session", 0);
                                editor.commit();

希望您提前理解并感谢您解决

1 个答案:

答案 0 :(得分:0)

非常感谢@krish解决我的问题,第二个活动onBackPressed 就像

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


        int count = getSupportFragmentManager().getBackStackEntryCount();
        Log.v("Your activty", "count " + count);
        Log.v("Your activty", getSupportFragmentManager().findFragmentById(R.id.content_frame) + "");

        if (getSupportFragmentManager().findFragmentById(R.id.content_frame) instanceof Frag_home) {
            System.exit(0);
        }

        super.onBackPressed();
    }
}

并退出:

   /*Session*/
                                final SharedPreferences login = getSharedPreferences(
                                        "Login", ModulesActivity.MODE_PRIVATE);
                                SharedPreferences.Editor editor = login.edit();
                                editor.putInt("session", 0);
                                editor.commit();

                                Intent intent = new Intent(ModulesActivity.this, Login.class);

                                startActivity(intent);

                                finish();

简单完成();非常感谢你......