Я хочу перейти на головний екран програмно в Android, коли користувач натискає кнопку. Як це можна зробити?
Я хочу перейти на головний екран програмно в Android, коли користувач натискає кнопку. Як це можна зробити?
Відповіді:
Ви можете зробити це за допомогою Наміру .
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
Цей намір запустить програму запуску, яку визначив користувач. Будьте обережні з цим, оскільки це буде виглядати так, як якщо ваша програма цього не очікує.
Якщо ви хочете, щоб це створило кнопку виходу з вашого додатка, прочитайте цю статтю про кнопки виходу в Android
startActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME));
(FLAG_ACTIVITY_NEW_TASK, здається, не потрібна.)
ACTION_MAIN
і на що CATAGORY_HOME
посилається?
Однорядкове рішення
moveTaskToBack(true); //activity.moveTaskToBack(true);
він буде поводитись, коли натискається кнопка "Домашня сторінка"
Відповідь Януша чудова.
Єдине, що я хочу додати, і це занадто довго для коментаря, це те, що ви можете перейти на головний екран, не маючи посилання на поточну активність.
Код Януша потрібно викликати з 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);
З сайту розробника Android
Ось кілька прикладів інших операцій, які ви можете вказати як наміри, використовуючи ці додаткові параметри:
* ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.
Я знаю, що це трохи пізно, але я також зіткнувся з тією ж проблемою, і ось як я її вирішив. Повертаючись до свого, 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
активною, вона переходить на головний екран.
startActivity((new Intent(Intent.ACTION_MAIN)).addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));