2016-03-23 26 views
0

Merhaba Ben Andriod için oldukça yeni. Üç aktivitem var A B C. A, MainActivity B ve C bağımsız aktivitelerdir. MainActivity'de bir takvim ekledim ve bazı tarihleri ​​vurguladım. Yeni bir örnek başlatılmadan geri MainActivity dönüyor

Şimdi MainActivity aracılığıyla yeni bir etkinlik B başlatın ve aşağıdaki kodu

public void OnClick(View V){ 
     Intent i= new Intent(getApplicationContext(),A.class); 
     i.setFlags(Imtent.FLAG_ACTVITIY_CLEAR_TOP); 
     startActivity(i);  
    } 

Bu MainActivity geri döner ama Vurgulanan tarihleri ​​bulunmamaktadır kullanan bir geri dönüş. Yeni bir etkinlik oluşturup oluşturmadığımı ya da günleri vurgulamakta yanlış bir şey yapıp yapmadığımı bilmek istiyorum.

+0

Düğmeye ne geri basın oluyorsa zaman? Eğer MainActivity sizin başlangıç ​​aktivitenizse, uygulama çıkacaktır. – jaibatrik

+0

1. Geri veya ana düğmeyi kullanmak, Ana Kaliteye dönmek için yeterlidir. 2. Aktivitenin launchMode'u hakkında araştırma yapın. –

+0

mainActivity'i tekrar başlatmayın, BackStack'a bakın. http://developer.android.com/guide/components/tasks-and-back-stack.html – Manu

cevap

2

Sen MainActivity Manifest'inizde aşağıdaki satırı kullanmalısınız: Örneğin

... 
android:launchMode="singleTask" 
... 

:

 <activity 
      android:name=".activities.MainActivity" 
      android:label="@string/app_name" 
      android:launchMode="singleTask" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <action android:name="android.nfc.action.NDEF_DISCOVERED" /> 

       <category android:name="android.intent.category.DEFAULT" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
+0

Buna gerek yok. Bunu yalnızca this.finish() –

+0

olarak adlandırabilirsiniz. Bazı durumlarda, örneğin, arka yığın geçmişine gereksinim duyuyorsa, bu .finish() iyi bir çözüm değildir. Eğer C aktivitesinde ise ve aktiviteyi yeniden yaratmadan A aktivitesine veya B faaliyetine geri dönme şartına sahipse, eğer B aktivitesi biterse bu imkansızdır. –

+0

Tamamen size katılıyorum, ama şu anda bunu gerektirmiyor gibi görünüyor. Yanılıyor olabilirim, ama bu şekilde –

2

Önceki etkinliği yeniden başlatmaya gerek yoktur. Mevcut aktiviteyi kapatmak ve öncekine geri dönmek istediğinizde this.finish()'u arayabilirsiniz. Bu BackStack'taki son etkinlikse, uygulama kapanacaktır.

İlgili konular