Это немного выстрел в темноте, но, возможно, я делаю очевидную ошибку;
У меня есть LinearLayout, определенный в моем main.xml, с идентификатором "@ + id / imageListContainer". В моем main.xml больше ничего нет, и LinearLayout совершенно прост (как eclipse вставляет его для вас из редактора GUI).
<LinearLayout
android:id="@+id/imageListContainer"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
</LinearLayout>
Затем я хочу динамически заполнить LinearLayout, используя этот код:
LinearLayout imageContainer = (LinearLayout)findViewById(R.id.imageListContainer);
из внутри функции обратного вызова приложения onCreate ().
Раньше это работало нормально. Однако, когда я начал добавлять фрагменты кода здесь и там (в основном в других действиях), в какой-то момент он перестал работать, и теперь я последовательно получаю нулевой указатель с помощью findViewById (). Я попытался заново сгенерировать R.java, переименовав LinearLayout (чтобы убедиться, что у меня есть контроль с того места, к которому был получен доступ, но доступ к нему возможен только из этого одного места) Вместо этого я попытался поместить код в onStart (), думая, что onCreate может работать слишком рано, создавая условия гонки, но и с этим не повезло. Я также убедился, что LinearLayout действительно называется «imageListContainer», что и есть (в противном случае сгенерированный R.java будет неправильным, а javac все равно будет жаловаться) и что нигде не будет дублированного объекта «imageListContainer».
Я в значительной степени растерялся относительно причины этого, поэтому буду признателен за любые предложения или предположения.
Вот трассировка стека:
E/AndroidRuntime( 327): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime( 327): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.company.PictureListView/com.company.PictureListView.PictureListView.PictureListActivity}: java.lang.NullPointerException
E/AndroidRuntime( 327): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
E/AndroidRuntime( 327): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
E/AndroidRuntime( 327): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
E/AndroidRuntime( 327): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
E/AndroidRuntime( 327): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 327): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 327): at android.app.ActivityThread.main(ActivityThread.java:4363)
E/AndroidRuntime( 327): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 327): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 327): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
E/AndroidRuntime( 327): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
E/AndroidRuntime( 327): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 327): Caused by: java.lang.NullPointerException
E/AndroidRuntime( 327): at com.company.PictureListView.PictureListActivity.updateMainActivityScreen(PictureListActivity.java:50)
E/AndroidRuntime( 327): at com.company.PictureListPictureListActivity.onCreate(PictureListActivity.java:38)
E/AndroidRuntime( 327): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime( 327): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
PS: Я забыл упомянуть, я также назвал setContentView (R.layout.main), так что это тоже не проблема.
PSS: Я попытался вместо этого добавить кнопку в графический интерфейс, а затем вызвать код, содержащий findViewById () внутри обратного вызова для этой кнопки, и это работает! Это возвращает меня к мысли, что может быть какое-то состояние гонки.