2016-11-02 5 views
1

Я хочу сделать кодирование, как показано ниже ..onBackPressed добавить двойной кран выхода с навигационным ящиком?

boolean doubleBackToExitPressedOnce = false; 
@Override 
public void onBackPressed() { 
    if (getFragmentManager().getBackStackEntryCount() > 0) { 
     getFragmentManager().popBackStack(); 
    } else { 
     Fragment fragment = getFragmentManager().findFragmentById(R.id.container); 
     if (fragment instanceof MainHomeFragment) { 
      if (doubleBackToExitPressedOnce) { 
       super.onBackPressed(); 
       return; 
      } 

      this.doubleBackToExitPressedOnce = true; 
      Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show(); 

      new Handler().postDelayed(new Runnable() { 

       @Override 
       public void run() { 
        doubleBackToExitPressedOnce = false; 
       } 
      }, 2000); 
     } 
     else { 
      super.onBackPressed(); 
     } 
    } 
} 

Моя проблема, когда ящик открыт, onbackpressed не может закрыть ящик .. Я хотел бы добавить следующий код ... где я должен поставить код ?

+0

Добавьте код в onBackPressed() и добавить еще блок для работы с функциями двойного выхода. – Jaydroid

+0

@Jaydroid за ответ –

ответ

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

переопределить на backpressed метод в деятельности

public void doExitApp(){ 
       if ((System.currentTimeMillis() - exitTime) > 2000) { 
        Toast.makeText(this, R.string.press_again_exit_app, Toast.LENGTH_SHORT).show(); 
        exitTime = System.currentTimeMillis(); 
       } else { 
        finish(); 
       } 
      } 
+0

Спасибо, его работа для меня –

0

Добавьте этот код в ваш метод onBackPress

 if (getFragmentManager().getBackStackEntryCount() > 0) { 
    getFragmentManager().popBackStack(); 
} else { 

      if (menu1.isOpened()) { 

       menu1.close(true); 

      } else { 
       if (drawer_layout.isDrawerOpen(Gravity.LEFT)) { 

        drawer_layout.closeDrawer(Gravity.LEFT); 

        doubleBackToExitPressedOnce = false; 

       } else { 

        if (doubleBackToExitPressedOnce) { 
         super.onBackPressed(); 
         return; 
        } 

       } 
       this.doubleBackToExitPressedOnce = true; 
       Toast.makeText(this, "Press again to exit", Toast.LENGTH_SHORT).show(); 

       new Handler().postDelayed(new Runnable() { 

        @Override 
        public void run() { 
         doubleBackToExitPressedOnce = false; 
        } 
       }, 2000); 
      } 
      } 
+0

спасибо за ответ –

+0

нет, его не работает для меня ... –

 Смежные вопросы

  • Нет связанных вопросов^_^