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

问题描述:

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

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

试试这个

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

我想你应该创建一个类似片段的可变检查位置:

int position; 

并为您在onBackPressed的位置,如果位置= 0,则退出该应用程序:

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

这里是我所做的:

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

但你应该定义fragment_num变量作为一个全局变量,可以从这里得到它。 把这个放在你的活动中有碎片,这段代码适用于我,当我点击返回按钮时,它会去到碎片num 0,如果你在那个碎片中,应用程序将被关闭。

我已经在上一篇文章中提到过这个问题,但我会再次发布。

在你改变片段的部分,做这样的事情:

currentFragment = fragmentToDisplay; 

现在,在您onBackPressed,以最快的方式,添加以下内容:

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

在活动将这个在其中添加或替换片段

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

您可以使用此

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

    super.onBackPressed(); 
} 

公共布尔moveTaskToBack(布尔非根)

在API级别1移动包含该活动的活动堆栈的 背面的任务。任务内的活动顺序为 未更改。

参数nonRoot如果为false,则仅当该活动为 任务的根时才起作用;如果属实,它将适用于任务中的任何活动。 返回如果任务已移动(或已在后面),则返回true,否则返回 ,否则返回false。

请检查生命周期过程

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

这是行不通的。您应该从后台堆栈中弹出最后一个条目,而不要按后退键执行碎片事务。将您的代码更改为:

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