2010-07-17 8 views
38

İki etkinlik içeren bir uygulamam var ve her ikisi de uygulamadaki ilgili etkinliği başlatarak başlatıcıda iki simgenin görünmesini istiyorum.Tek bir uygulamada farklı etkinlikleri başlatmak için birden fazla simge nasıl alabilirim?

Özellikle, ana uygulamamı başlatmak için bir simge ve ayarları etkinliğimi başlatmak için başka bir simge istiyorum. Mümkün mü? İşte

Ben şimdiye kadar denedim budur:

<activity android:label="MyApp" android:name=".MyApp"> 
     <intent-filter> 
      <action android:name=".MyApp"/> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity> 


    <activity android:label="Settings" android:name=".Settings"> 
     <intent-filter> 
      <action android:name=".Settings"/> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity> 

Bu iki başlatıcısı simgeleri oluşturur, ancak ikisi de benim ayarlar uygulamasını çalıştıran ikinci simgesinin yerine benim ana app çalıştırın. Sadece başlatıcı kategorisini denedim ama sonra bir simge alamıyorum, bu yüzden ana eyleme ihtiyacım var gibi görünüyor.

Bu doğru yaklaşım mıdır yoksa manifestte iki uygulama ilan etmeli miyim?

cevap

53

Yapmanız gereken şey, ayarlarınızın başka bir görevde başlatılmasını sağlamaktır. Görev yakınlığını belirterek bunu yapabilirsiniz. Bu, android:taskAffinity özniteliği ile yapılır. Varsayılan olarak tüm etkinlikler, bildirimde belirtilen ana pakete varsayılan varsayılan görev benzeşimini paylaşır. Ayarlar etkinliğinizde, ayar etkinliğinin kendi görevinde başlatılabilmesi için android:taskAffinity="your.own.package.SettingsTask" belirtebilirsiniz.

Extra documentation.

+0

Harika cevap, bu mükemmel çalışıyor. Teşekkürler! – afonseca

+0

Neden bunun başka bir görev gerektirmesi gerektiğini anlamıyorum? Tek bir görev içinde iyi çalışır ve ayrı görevler başka sorunlar yaratabilir. – sstn

+0

Bana çalışmadı. Görevi 'taskAffinity''' ile faaliyete başlamadan işe yaramadı' Aktivite' ile bayrak 'Intent.FLAG_ACTIVITY_NEW_TASK' –

7

Kesinlikle doğru yönde gidiyoruz.

<activity android:name=".DeckDrill" 
      android:label="DeckDrill"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
<activity android:name=".DeckList" 
      android:label="DeckList"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

ne şekilde gerçekleşebileceği belirtmek eylem elementlerden parazit olduğunu düşünüyorum: Bu (Ben listemde faaliyetlerin tümüne sahip çünkü hızlı erişim için devving yerken, kesik) ne var sınıfının adı. Eminim ki, eylemlerin ve kategorilerin sabitlere başvurması gerekir. Gördüğünüz şeyle nasıl sonuçlanacağını bilmiyorum, ancak bunları kaldırmayı deneyebilirsiniz. Bunun dışında, sahip olduğum şeye sahipsin.

İlgili konular