【发布时间】:2014-01-02 04:02:02
【问题描述】:
我想在用户单击后退按钮时关闭应用程序。我的流程是这样的
第一次登录:
登录屏幕 A-> 主页 B 现在我想在用户按下后退按钮时关闭应用程序。它会返回登录屏幕。我该怎么办?
【问题讨论】:
标签: android android-layout android-fragments android-fragmentactivity
我想在用户单击后退按钮时关闭应用程序。我的流程是这样的
第一次登录:
登录屏幕 A-> 主页 B 现在我想在用户按下后退按钮时关闭应用程序。它会返回登录屏幕。我该怎么办?
【问题讨论】:
标签: android android-layout android-fragments android-fragmentactivity
在从Login 活动开始Main page 时,完成login 页面。所以在活动堆栈中不会有登录页面。因此,当您在主页面中按下返回按钮时,它将关闭应用程序。
【讨论】:
finish(); 后拨打startActivity(i);
当您使用意图从 A 启动活动 B 时,然后在启动活动后输入 finish()。这将从堆栈中终止当前活动,即您的登录页面,当用户按下时,他将退出应用程序。
示例代码是:
Intent intent = new Intent((getApplicationContext(),B.class);
startActivity(intent);
finish();
【讨论】:
对于您用于进入其他活动的每个 Intent,您必须按照这种方式传递意图,只需将 flag 传递给每个意图,如下所示和之后使用 startActivity() 启动 Activity 你必须在下面给出的演示代码之后添加 finish()
Intent i=new Intent(firstActivity.this,secondActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish();
【讨论】:
这是对您的问题的类似讨论。 .Here
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
}
return super.onKeyDown(keyCode, event);
}
public void onBackPressed() {
Intent myIntent = new Intent(B.this, A.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//clear the backstack
startActivity(myIntent);
finish();
return;
}
以上代码解释HERE 只需清除 Activity Stack,然后完成 Activity.. 这样您的应用就会关闭。
【讨论】:
在您的第二个活动“B”中,您应该覆盖 onBackPressed 方法以从当前应用程序完成。所以你可以这样做:
@Override
public void onBackPressed() {
Toast.makeText(getBaseContext(),"Exiting application...",Toast.LENGTH_SHORT).show();
this.finish();
}
这件事对我有帮助。希望对你也有帮助。
【讨论】:
您可以完成活动,但您不能退出应用程序,因为 android 设计不是用于选择退出应用程序。相反,你可以打电话回家意图带回家:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
【讨论】:
这里有另一种方式:
试试这个,在你的 mainifest 文件中添加 noHistory 每个活动。
android:noHistory="true"【讨论】:
覆盖方法
onBackPressed(){
//desired task like
//finish Activity here
}
并在那里完成活动
【讨论】: