2013-12-12 46 views
0

我需要添加到我的应用程序的可能性,以显示为用户退出应用的消息(也就是你想离开?是 - 否)Android的,有多少碎片离开

我使用的片段所以我不真的知道哪个是最后显示“onBackPressed”消息的最后一个,那么有没有办法知道剩下多少片断或者我是否错过了一些东西?

+0

谢谢! getBackStackEntryCount()是我需要的 –

回答

1

getSupportFragmentManager()getBackStackEntryCount()是我需要

@Override 
public void onBackPressed() { 

    if(getSupportFragmentManager().getBackStackEntryCount() == 0){ 
     DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       switch (which){ 
       case DialogInterface.BUTTON_POSITIVE: 
        MainActivity.this.finish(); 
        break; 

       case DialogInterface.BUTTON_NEGATIVE: 
        break; 
       } 
      } 
     }; 

     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setMessage(getString(R.string.leave_app)).setPositiveButton("Yes", dialogClickListener) 
      .setNegativeButton("No", dialogClickListener).show(); 
    } else { 
     super.onBackPressed(); 
    } 


} 
2

如果您正在使用ViewPager您可以使用ViewPager的getCurrentItem() method得到currentFragment号,

然后实现的ActivityonBackPressed方法,也将不考虑任何片段的用户是在叫,但你仍可以比较当前片段编号与片段总数并显示一条消息。

private boolean exit = false; 
    @Override 
     public void onBackPressed() { 
        // implement a logic on backPressed, I have added a logic 
        // it show a toast, if the user presses back again within 
        // three seconds, the activity closes. 

        if (exit) 
       Home.this.finish(); 
      else { 
       Toast.makeText(this, "Press Back again to Exit.", 
         Toast.LENGTH_SHORT).show(); 
       exit = true; 
       new Handler().postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         exit = false; 
        } 
       }, 3 * 1000); 

      } 

     } 
+0

谢谢,但我想在我的最后一个片段中显示,从@Tom Reznik提供的答案是我需要的,这是“getBackStackEntryCount()” –

+1

@ user2427819好吧,那么你可以使用FragmentManager的findFragmentById()方法获取当前片段ID,并将其与最后一个片段的片段ID进行比较,并显示一条消息。 –