poo*_*118 193 android back-button exit
我有一个应用程序,在主页上我有通过应用程序导航的按钮.
在那个页面上,我有一个"EXIT"按钮,当点击它时,应该将用户带到应用程序图标所在的手机上的主屏幕.
我怎样才能做到这一点?
ogn*_*ian 323
Android的设计不赞成通过选择退出应用程序,而是通过操作系统管理它.您可以通过相应的Intent调出Home应用程序:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
Kar*_*iya 74
也许你可以尝试这样的事情
假设在我们的应用程序中,我们有许多活动(比如十个),我们需要直接退出此活动.我们可以做的是,创建一个intent并转到root活动并在intent中设置标志
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Run Code Online (Sandbox Code Playgroud)
另外,在意图中添加一些额外的布尔值
intent.putExtra("EXIT", true);
Run Code Online (Sandbox Code Playgroud)
然后在根活动,检查的值boolean
,并根据该呼叫结束(),在onCreate()
根活动
if (getIntent().getBooleanExtra("EXIT", false)) {
finish();
}
Run Code Online (Sandbox Code Playgroud)
Ndu*_*pza 28
System.exit(0);
Run Code Online (Sandbox Code Playgroud)
可能就是你要找的东西.它将关闭整个应用程序并带您进入主屏幕.
Laz*_*nja 25
这对我很有用.
关闭所有以前的活动,如下所示:
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("Exit me", true);
startActivity(intent);
finish();
Run Code Online (Sandbox Code Playgroud)
然后在MainActivity onCreate()方法中添加此项以完成MainActivity
setContentView(R.layout.main_layout);
if( getIntent().getBooleanExtra("Exit me", false)){
finish();
return; // add this to prevent from doing unnecessary stuffs
}
Run Code Online (Sandbox Code Playgroud)
小智 23
首先使用方法完成您的申请 finish();
然后在onDestroy中添加以下行以删除Force关闭
android.os.Process.killProcess(android.os.Process.myPid());
super.onDestroy();
Run Code Online (Sandbox Code Playgroud)
Chr*_*ian 19
如果您想结束活动,可以直接致电finish()
.然而,在屏幕上有一个退出按钮是不好的做法.
Bur*_*man 17
有些活动实际上你不想在按下后退按钮时再次打开这样的Splash Screen Activity,欢迎屏幕活动,确认Windows.实际上你在活动堆栈中不需要这个.你可以使用=> open manifest.xml文件并添加一个属性
机器人:noHistory = "真"
这些活动.
<activity
android:name="com.example.shoppingapp.AddNewItems"
android:label=""
android:noHistory="true">
</activity>
Run Code Online (Sandbox Code Playgroud)
要么
有时您希望在某些后退按钮中关闭整个应用程序.这里的最佳实践是打开主窗口而不是退出应用程序.为此,您需要覆盖onBackPressed()方法.通常这种方法会打开堆栈中的顶级活动.
@Override
public void onBackPressed(){
Intent a = new Intent(Intent.ACTION_MAIN);
a.addCategory(Intent.CATEGORY_HOME);
a.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(a);
}
Run Code Online (Sandbox Code Playgroud)
要么
在后退按钮中,您想要退出该活动,并且您也不想在活动堆栈中添加它.在onBackPressed()方法中调用finish()方法.它不会关闭整个应用程序.它将用于堆栈中的先前活动.
@Override
public void onBackPressed() {
finish();
}
Run Code Online (Sandbox Code Playgroud)
(我尝试过以前的答案,但他们缺少一些观点.例如,如果你return;
在完成活动后没有完成,剩下的活动代码就会运行.你还需要编辑onCreate with return.如果你没有运行super.onCreate()你会得到一个运行时错误)
说你有MainActivity
和ChildActivity
.
在ChildActivity里面添加:
Intent intent = new Intent(ChildActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);
return true;
Run Code Online (Sandbox Code Playgroud)
在MainActivity的onCreate里面添加:
@Override
public void onCreate(Bundle savedInstanceState) {
mContext = getApplicationContext();
super.onCreate(savedInstanceState);
if (getIntent().getBooleanExtra("EXIT", false)) {
finish();
return;
}
// your current codes
// your current codes
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
318357 次 |
最近记录: |