2017-01-07 10 views
0

Когда я один раз нажимаю кнопку «Назад», он переместится на предыдущий экран, и когда я дважды щелкнув, он выйдет из моего приложения.Как вернуться к предыдущему действию на один клик и дважды щелкнуть, как выйти из приложения?

Я пробовал много и сослался на вопросы, связанные с stackoverflow, но не могу решить мою проблему, поэтому я задаю вопрос здесь.

NAvigation.java

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

     backButtonHandler(); 
     // Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show(); 
    } 

} 


public void backButtonHandler() { 
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(
      Navigation.this); 
    // Setting Dialog Title 
    alertDialog.setTitle("Leave application?"); 
    // Setting Dialog Message 
    alertDialog.setMessage("Are you sure you want to leave the application?"); 
    // Setting Icon to Dialog 
    alertDialog.setIcon(R.drawable.m_visit); 
    // Setting Positive "Yes" Button 
    alertDialog.setPositiveButton("YES", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        finish(); 
       } 
      }); 
    // Setting Negative "NO" Button 
    alertDialog.setNegativeButton("NO", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        // Write your code here to invoke NO event 
        dialog.cancel(); 
       } 
      }); 
    // Showing Alert Message 
    alertDialog.show(); 
} 

я попробовал этот путь, но это только поможет мне для выхода из приложения.

ответ

0

Попробуйте эту логику

private int clickCount = 0; 
private long delay = 100; 
Timer timer = new Timer(); 
@Override 
public void onBackPressed() { 
    if (clickCount == 2) { 
    timer.cancel(); 
    //operations to be performed on double click 
    } else { 
    clickCount++; 
    timer.schedule(new TimerTask() { 
     @Override public void run() { 
     getActivity().runOnUiThread(new Runnable() { 
      @Override public void run() { 
      clickCount = 0; 
      //operations to be performed on single click 
      } 
     }); 
     } 
    }, delay); 
    } 
} 

установить любую задержку вы хотите между щелчком в delay поле

+0

ее не работает .. когда я нажал единственную Тымь кнопку назад, то dailog на дисплее, но я хочу показать, что dailog в два раза нажмите –

+0

код, который я добавил, является просто образцом. блок 'if' будет выполнен, когда пользователь дважды щелкнет кнопку« Назад »и' '' '' '' run '() 'метод' else будет выполняться одним нажатием. поэтому добавьте любую операцию, которую вы хотите, при однократном нажатии и двойном щелчке. – arjun