Geçtiğimiz günlerde, yeniden çoğaltmak zorlukla karşılaştım. NPE, bir parça ArrayAdapter'i Etkinlik'ten verileri başlatmaya çalıştığında oluşur. Etkinlik'ın onCreate yöntemde başlatıldı varsayılan listesi:Neden Fragman'ın onCreate(), bazen Activity'ın onCreate() öğesinden önce çağrılır?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ...
mAccounts = new ArrayList<>();
// ...
}
@Override
public List<Account> getAccounts(){
return mAccounts;
}
fragmanı) olarak onCreate (Aynı zamanda bir liste bağdaştırıcı yarattığı:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
setHasOptionsMenu(true);
//mAccountProvider is an interface implemented by the activity
mAccounts = mAccountProvider.getAccounts();
mAccountAdapter = new AccountAdapter(getActivity(), R.layout.account_list_item, mAccounts);
}
NPE AccountAdapter varsayılan içinde oluşur getCount() yöntemi denir. Nedeni, mAccounts'un boş olmasıdır. Sorun nadiren görünüyor ve bunu yeniden oluşturamadım.
zaman mümkün olduğunu etkinliğin onCreate() önce denir veridiliminin onCreate()? kaynak koduna göre , fragman en onCreate() etkinlik'ın onCreate() olarak gönderilir. Aktivite onCreate() çalışmasını bitirdikten sonra neden çağrılır? etkinlik onCreate()
yöntemi bittikten önce parçanın
hayır mümkün değildir. – Blackbelt
Fragmanınızın etkinliğinizde nasıl göründüğü hakkında daha fazla kod yayınlamalısınız. – jobcrazy
@Ilya Vorobiev ile aynı fikirdeyim. Etkinliğin super.onCreate() öğesi çağrıldığında parçanın onCreate() öğesi gönderilir. Sorun, çoğu durumda, Faaliyetin onCreate'dan sonra yürütülmesidir. – Zzokk