当用户点击按钮时,我想在Android中通过编程方式返回主屏幕。如何实现?
当用户点击按钮时,我想在Android中通过编程方式返回主屏幕。如何实现?
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
这个Intent将启动用户定义的launcher应用程序。请小心使用,因为如果用户没有预期此操作,它会让你的应用程序看起来像是崩溃了。
如果您想从您的应用程序中构建一个“退出”按钮,请阅读这篇关于Android中退出按钮的文章。
startActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME));
(似乎不需要FLAG_ACTIVITY_NEW_TASK)。 - Jonik一行代码解决方案
moveTaskToBack(true); //activity.moveTaskToBack(true);
它将会表现得像按下主页按钮一样
Janusz的回答非常好。
我想补充的是,你可以在没有当前活动引用的情况下返回到主屏幕,但这个内容有点长,不适合作为评论。
由于startActivity()
,Janusz的代码需要从一个Activity或Fragment中调用。
为了解决这个问题,你可以在应用程序文件中存储对应用程序上下文的静态引用:
public class YourApplication extends Application
{
private static Context mAppContext;
public void onCreate()
{
super.onCreate();
...
YourApplication.mAppContext = getApplicationContext();
}
public static Context getContext()
{
return mAppContext;
}
}
现在你可以从你的应用程序中的任何类(不仅限于Activity、Fragment或其他类,而是有当前Activity的引用)将用户发送到设备主屏幕,但你需要自己决定这是好事还是坏事:
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
YourApplication.getContext().startActivity(startMain);
来自Android开发者网站
以下是可以使用这些附加参数指定为意图的其他操作示例:
* ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.
startActivity((new Intent(Intent.ACTION_MAIN)).addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
我知道可能有点晚了,但我也遇到了同样的问题,这是我是如何解决它的。回到你的MainActivity
,你需要从现有的Activity
中添加标志。
final Intent mainActivity = new Intent(this, MainActivity.class);
mainActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
mainActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
现在,当您按下返回按钮时,如果MainActivity
是活动状态,则会返回到主屏幕。