5

Mam pasek akcji w mojej aplikacji na Androida (poziom interfejsu API 14). Istnieje przycisk strony głównej z ikoną mojej aplikacji. W MainActivity piszę krótki tekst w widoku EditText. Gdy nawiguję do PreferenceActivity, ikona otrzymuje strzałkę, która sygnalizuje mi, mogę przejść do strony głównej Activity (MainActivity).Android - Kliknij ikonę aplikacji ActionBar, utwórz nową instancję aktywności

// PreferenceActivity-onCreate 
    ActionBar actionBar = getActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true); 

kliknięciu na tę ikonę aplikacji w ActionBar aby powrócić do główną działalność

// PreferenceActivity 
@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    switch (item.getItemId()) 
    { 
    case android.R.id.home: 
     Intent intent = new Intent(this, MainActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intent); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

Teraz moja główną działalność została utworzona ponownie und tekst w EditText zniknął. Pomyślałem, że utrzymam przy życiu Aktywność Główną dzięki die Intent.FLAG_ACTIVITY_CLEAR_TOP. Chcę mieć zachowanie podobne do mojego przycisku powrotu na urządzeniu.

Odpowiedz

7

Jeśli chcesz powrócić do istniejącej instancji MainActivity, trzeba to zrobić:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

Korzystanie sam CLEAR_TOP powoduje nowa instancja MainActivity ma zostać utworzony.

+0

Ten sposób nie działa. Ale kiedy piszę 2 addFlags, działa dobrze. \t \t \t intent.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP); \t \t \t intent.addFlags (Intent.FLAG_ACTIVITY_SINGLE_TOP); – Gepro

+0

Ah ... przepraszam, potrzebujesz singla "|" a nie "||" między 2 flagami. Moja wina. Chcesz ** bitowy ** OR, a nie ** logiczny ** LUB. Edytowałem swoją odpowiedź. –

+0

Racja, muszę zauważyć, że – Gepro