2016-04-13 13 views
0

tanımlanan Faaliyet Class erişme: başvurulan Class erişmek için bir yolu var mıböylece gibi Manifest'te o ana Aktivite tanımlamak mantıklı bir ebeveyni olan her aktivite için parentActivityName

<activity 
     android:name=".ui.activity.MyActivity" 
     android:label="@string/activity_title" 
     android:parentActivityName=".ui.activity.ParentActivity" 
     android:theme="@style/My.Theme" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value=".ui.activity.ParentActivity" /> 
</activity> 

MyActivity içinde @parentActivityName veya [email protected] mu? (Ebeveyn Etkinliği örneğine erişmek istemediğimi lütfen unutmayın, sadece Sınıf)

Bunun nedeni, izleme amacıyla her Etkinlik için yol benzeri bir String oluşturmak istiyoruz. Bu durumda bu String /parent_activity/my_activity olacaktır - ve hiyerarşi Manifest'te zaten tanımlandığından, en iyi durumda oraya erişmek ve daha sonra iki kez tanımlamak olacaktır.

Yardımlarınız için teşekkür ederiz!

cevap

1

Belki de NavUtils.getParentActivityName(childActivityInstance)

+0

Evet, yardımcı oldu, teşekkürler! Ancak, bu yöntemi doğrudan kullanamıyorum çünkü childActivity bir nesne değil, bir nesne (ve böylece iki seviye daha derin olan hiyerarşiler için işe yaramaz). AMA [bu yöntemin eski uygulaması] kullanmayı deneyeceğim (https://android.googlesource.com/platform/frameworks/support/+/c9cf2eb0a9b6694d0fda3dbc313844955db60820/v4/java/android/support/v4/app/NavUtils.java # 182), hiyerarşi boyunca, sınıf/bileşen ismine dayanarak yinelemeli olarak atıfta bulunmak için referans olarak. Denemeyi ve rapor etmeyi deneyeceğim. – marcorei

+0

Bu iş yaptı. NavUtils.getParentActivityName (Bağlam, BileşenAdı) 'nı kullandım ve uygulama bağlamı ve sınıf adıyla 'ComponentName'i oluşturdum. – marcorei

0
Her zaman kolay bir yol gidebiliriz

:

Intent intent = new Intent(ParentActivity.this, ChildActivity.class); 
intent.putExtra("parent_activity_name", "ParentActivity"); 
... 
startActivity(intent); 

ParentActivity

yılında, dize olarak niyet ekstralar ebeveyn etkinlik adını geçirin Sonra ChildActivity faaliyeti

Intent intent = getIntent(); 
String parentName = intent.getStringExtra("parent_activity_name"); 

emin değil de bunu elde başka daha zarif bir çözüm varsa.

+0

Yanıtınız için teşekkür ederiz yardımcı olacaktır! Bu yaklaşımla ilgili problem, bunun, etkinlik yığınının üst etkinliği değil, bildirimin tanımladığı şekilde etkinlik hiyerarşisindeki üst öğeden değil, doğru mu? (Ben sadece her aktivitede manifest-veli ile ilgili bilgileri kodlayabildiğimi biliyorum, bu sadece bu bilgiyi iki kez [Manifest'te ve sonra her Aktivitede]) tanımlamak zorunda olduğum anlamına gelir). – marcorei

İlgili konular