Я хочу перейти на главный экран программно в Android, когда пользователь нажимает кнопку. Как это можно сделать?
Переход на главный экран программно
Ответ 1
Вы можете сделать это с помощью Intent.
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
Это намерение запустит приложение запуска, которое пользователь определил. Будьте осторожны с этим, потому что это будет выглядеть так, как ваше приложение разбилось, если пользователь этого не ожидает.
Если вы хотите, чтобы это создало кнопку выхода из вашего приложения, прочитайте эту статью на кнопках выхода в Android
Ответ 2
Однострочное решение
moveTaskToBack(true); //activity.moveTaskToBack(true);
он будет вести себя при нажатии кнопки Home
Ответ 3
Ответ Janusz - это здорово.
Единственное, что я хочу добавить, которое слишком длинное для комментария, состоит в том, что вы можете перейти на главный экран, не имея ссылки на текущую активность.
Код Janusz необходимо вызывать из Activity или Fragment из-за startActivity()
,
Чтобы обойти это, вы можете сохранить статическую ссылку на свои приложения Контекст в вашем файле приложения:
public class YourApplication extends Application
{
private static Context mAppContext;
public void onCreate()
{
super.onCreate();
...
YourApplication.mAppContext = getApplicationContext();
}
public static Context getContext()
{
return mAppContext;
}
}
Теперь вы можете отправить пользователя на главный экран устройства из любого класса вашего приложения, а не только с помощью действий, фрагментов или других классов с ссылкой на текущую активность (вы можете решить, хорошо это или плохо)
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
YourApplication.getContext().startActivity(startMain);
Ответ 4
Вот несколько примеров других операций, которые вы можете указать в качестве намерений, используя эти дополнительные параметры:
* ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.
Ответ 5
startActivity((new Intent(Intent.ACTION_MAIN)).addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
Ответ 6
Я знаю, что это немного поздно, но я столкнулся с одной и той же проблемой, и вот как я ее разрешил. Возвращаясь к вашему 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
на активную, она перейдет на главный экран.