Karşılaştığım garip bir sorunum var: get0ctivity() yöntemi her zaman null iç parçacığı döndürür. OnAttach() ve onCreateView() 'dan sonra çalıştırıyorum.() (Bu kod parçası Aktivitesinin onCreate() gelen çağrılan) Android getActivity() her zaman null iç parçacığı döndürür
:Bu fragman parçalarının yığını içeren bir FragmentActivity() içinde yaşayan, ve buna fragmanını ekleyerek yoldur
SmartFragment fragment;
fragment = (SmartFragment) Fragment.instantiate(this,
fragmentClassName, params);
mStackOfFragments.add(fragment);
FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.add(R.id.tabcontent, fragment);
trans.addToBackStack(null);
trans.commitAllowingStateLoss();
Ben yeterince açık umut
Düzenleme 1:
getActivity() çağrısı:
protected OnDoneListener nDoneListener = new OnDoneListener() {
@Override
public void OnDone(final int counter, final String name) {
if (getActivity() != null)
((TabActivity) getActivity()).RunOnUiThread(new Runnable() {
... ...
Bu geri arama farklı bir sınıftan deniliyor.
Düzenleme 2:
class MemoryManager()
{
private OnDoneListener nDoneListener;
public void setOnDoneListener(OnDoneListener onDoneListener)
{
this.onDoneListner = onDoneListener;
}
public void updateUiOnRequestFinish()
{
onDoneListener.onDone();
}
}
MemoryManaget kendisi farklı bir geri arama dan() updateUiOnRequestFinish çağrıları
Düzenleme 3:
FragmentManager günlükleri:
04-08 18:44:05.950: V/FragmentManager(16280): Commit: BackStackEntry{41f9bd60}
`04-08 18:44:05.950: D/FragmentManager(16280): mName=null mIndex=-1 mCommitted=false
04-08 18:44:05.950: D/FragmentManager(16280): Operations:
04-08 18:44:05.950: D/FragmentManager(16280): Op #0: ADD FragmentMyProfile{41f9bc20 id=0x7f070126}
04-08 18:44:05.950: V/FragmentManager(16280): Setting back stack index 0 to BackStackEntry{41f9bd60}
04-08 18:44:05.950: V/FragmentManager(16280): Run: BackStackEntry{41f9bd60 #0}
04-08 18:44:05.950: V/FragmentManager(16280): Bump nesting in BackStackEntry{41f9bd60 #0} by 1
04-08 18:44:05.950: V/FragmentManager(16280): Bump nesting of FragmentMyProfile{41f9bc20 id=0x7f070126} to 1
04-08 18:44:05.950: V/FragmentManager(16280): add: FragmentMyProfile{41f9bc20 id=0x7f070126}
04-08 18:44:05.950: V/FragmentManager(16280): Allocated fragment index FragmentMyProfile{41f9bc20 #0 id=0x7f070126}
04-08 18:44:05.950: V/FragmentManager(16280): moveto CREATED: FragmentMyProfile{41f9bc20 #0 id=0x7f070126}
04-08 18:44:05.950: V/FragmentManager(16280): moveto ACTIVITY_CREATED: FragmentMyProfile{41f9bc20 #0 id=0x7f070126}
04-08 18:44:05.990: V/FragmentManager(16280): moveto STARTED: FragmentMyProfile{41f9bc20 #0 id=0x7f070126}
04-08 18:44:06.030: V/FragmentManager(16280): moveto RESUMED: FragmentMyProfile{41f9bc20 #0 id=0x7f070126}
`
ve Bana göre iyi görünüyor. Bu yüzden, bu hatanın getActivity() işlevini geri arama yönteminden aldığım şekilde olduğunu tahmin ediyorum. sizin "android.support.v4.app kullanıyorsanız
Fragman yaşam döngüsü ile aşina değilseniz sadece garip ... http://developer.android.com/guide/components/fragments.html#CoordinatingWithActivity ... Ayrıca bu paragraftan önce birkaç satırı kontrol edin ... Etkinlik kurgusunda Etkinlik'e Fragment ekliyor musunuz? – Selvin
Kodu getActivity() çizgisiyle koyabilir misiniz? –
Selvin: Yorumunuzdan bunun önemsiz bir konu olduğunu ima ediyor, umarım haklısınızdır, ama muhtemelen değilsiniz. Bu bağlantıyı ve içeriğini biliyorum ve hala bu problemi yaşıyorum. – Nativ