Andare alla schermata iniziale di programmazione
-
03-10-2019 - |
Domanda
Voglio andare alla schermata iniziale di programmazione in Android quando l'utente fa clic sul pulsante. Come si può fare?
Soluzione
È possibile farlo attraverso un Intent .
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
Questo intento inizierà l'avvio delle applicazioni che l'utente ha definito. Fate attenzione con questo, perché questo sguardo volontà come l'applicazione si è schiantato se l'utente non si aspetta questo.
Se si desidera che questo per costruire un pulsante di uscita dalla tua app si prega di leggere questo articolo su pulsanti di uscita in Android
Altri suggerimenti
Una soluzione riga
moveTaskToBack(true); //activity.moveTaskToBack(true);
si comporterà come viene premuto il pulsante Home
La risposta di Janusz è grande.
L'unica cosa che voglio aggiungere, che è un po 'troppo lungo per un commento, è che si può andare alla schermata principale senza avere un riferimento all'attività corrente.
Codice di Janusz deve essere chiamato da un'attività o un frammento a causa di startActivity()
,
Per aggirare il problema, è possibile memorizzare un riferimento statico al vostro app contesto nel suo dossier di candidatura:
public class YourApplication extends Application
{
private static Context mAppContext;
public void onCreate()
{
super.onCreate();
...
YourApplication.mAppContext = getApplicationContext();
}
public static Context getContext()
{
return mAppContext;
}
}
Ora è possibile inviare l'utente alla schermata iniziale del dispositivo da qualsiasi classe nella vostra applicazione, non solo Attività, frammenti, o di altre Classi con un riferimento alla corrente di attività (è possibile decidere se questo è un bene o un male) :
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
YourApplication.getContext().startActivity(startMain);
Android sito degli sviluppatori
Ecco alcuni esempi di altre operazioni che è possibile specificare come intenti usando questi parametri aggiuntivi:
* 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));
So che questo è un po 'tardi, ma ho anche incontrato lo stesso problema ed ecco come ho risolto esso. Tornando alla tua MainActivity
è necessario aggiungere le bandiere dal eccitante Activity
final Intent mainActivity = new Intent(this, MainActivity.class);
mainActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
mainActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
Ora, quando si è premuto il pulsante Indietro essere MainActivity
quella attiva, si andrà alla schermata iniziale.