当我按下第一个片段上的后退按钮时,应用应该退出

时间:2015-10-07 09:48:27

标签: android android-fragments

我使用下面的代码通过按下后退按钮从下一个片段中恢复主屏幕片段。现在我想知道当我从主页片段点击后退按钮时如何退出应用程序。

   public void onBackPressed() {
      FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
      ft.replace(R.id.container, homefragment, LearnSourastraUtils.HOME_FRAGMENT_TAG);
      ft.commit();
    }

7 个答案:

答案 0 :(得分:3)

试试这个

getActivity().moveTaskToBack(true); 
getActivity().finish();

答案 1 :(得分:1)

将此项添加到您要添加或替换片段的活动中

@Override
public void onBackPressed() {
 if (getSupportFragmentManager().getBackStackEntryCount() == 1) {
       finish();
 } else {                   
  getSupportFragmentManager().popBackStack();
 }
}

答案 2 :(得分:0)

我认为您应该创建片段的变量检查位置,如:

int position;

并检查onBackPressed中的位置,如果position = 0,则退出app:

public void onBackPressed() {
  if(position!=0)
  { //Do something
  }
  else finish();
}

答案 3 :(得分:0)

这就是我的所作所为:

@Override
public void onBackPressed() 
{
    if(fragment_num != 0)
    {
        displayView(0);
    }
    else
    {
        super.onBackPressed();
    }
}

但你应该将fragment_num变量定义为全局变量,以便从这里获取它。 把它放在你的活动中有片段,这个代码适合我,当我点击后退按钮时,它会转到片段num 0,如果你在那个片段,应用程序将被关闭。

答案 4 :(得分:0)

我已在上一篇文章中将此建议作为答案,但我会在此处再次发布。

在更改片段的部分中,执行以下操作:

currentFragment = fragmentToDisplay;

现在在onBackPressed中,在顶部,添加以下内容:

if (currentFragment == homefragment){
    super.onBackPressed();
    return;
}

答案 5 :(得分:0)

您可以使用此

    public void onBackPressed() {
    // TODO Auto-generated method stub
    getActivity().moveTaskToBack(true);
    getActivity().finish(); 

    super.onBackPressed();
}
  

public boolean moveTaskToBack(boolean nonRoot)

     

在API级别1中添加将包含此活动的任务移动到   活动堆栈的后面。任务中的活动顺序是   不变。

     

参数nonRoot如果为false,则仅在活动为时才有效   任务的根源;如果为true,它将适用于任务中的任何活动。   返回如果任务被移动(或者它已经在后面),则为true   返回,否则为假。

请检查生命周期过程

  

http://developer.android.com/intl/es/reference/android/app/Activity.html

答案 6 :(得分:0)

那不会奏效。您应该只从后台堆栈中弹出最后一个条目,而不是在按下后退键时执行frag事务。将您的代码更改为:

@Override
public void onBackPressed() {
    FragmentManager fragmentManager = getFragmentManager();
    if (fragmentManager.getBackStackEntryCount() != 0) {
        fragmentManager.popBackStack();
    } else {
        super.onBackPressed();
    }
}
相关问题