OnCreate erişmek manzarası NullPointerException()
Bu sorun sık sık StackOverflow ilan için meşru bir soru.
Bir öğretici takip ediyorum. Yeni bir etkinlik sihirbazını kullanarak oluşturdum. Views üzerinde bir yöntemi çağırmak için çalışırken benim etkinlik onCreate() findViewById() elde NullPointerException olsun.
onCreate() etkinlik:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View something = findViewById(R.id.something);
something.setOnClickListener(new View.OnClickListener() { ... }); // NPE HERE
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}
Düzen XML (fragment_main.xml):
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="packagename.MainActivity$PlaceholderFragment" >
<View
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@ id/something" />
</RelativeLayout>
CEVAP
Öğretici muhtemelen eskimiş, parça tabanlı bir kullanıcı arabirimi Sihirbazı tarafından oluşturulan tarafından tercih kodu yerine etkinlik temelli bir UI oluşturmak için çalışıyor.
Görünüm aktivite düzeni (activity_main.xml) parça düzeni (fragment_main.xml) değil. onCreate() yaşam döngüsü içinde faaliyet görünüm hiyerarşisi içinde bulmak için çok mu erken, ve null döndürülür. null bir yöntem çağırma NPE neden olur.
Tercih edilen çözüm şişirilmiş parça düzeni rootView 17 *16 çağıran**,: parça kodu taşımaktır
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
View something = rootView.findViewById(R.id.something); // not activity findViewById()
something.setOnClickListener(new View.OnClickListener() { ... });
return rootView;
}
Bir yan not olarak, parça düzeni sonunda etkinliğinin bir parçası parça işlem çalıştırıldıktan sonra findViewById() ile etkinlik ama hiyerarşi ve bulunabilir görünüm olacak. Parça bekleyen işlemler onCreate() sonra super.onStart() içinde idam edilecek.

Boş parametre için sınıftır ya da Null...
Hata TF30063: erişmek için ... \Defaul...
Nasıl komut satırı argümanları bir pro...
JavaScript doğrulayıcı Eclipse NullPoi...
nasıl iFrame Ana Sayfa jquery kullanar...