gpt4 book ai didi

android - 尝试检索 LinearLayout 时出现奇怪的 NullpointerException

转载 作者:行者123 更新时间:2023-11-29 18:15:47 24 4
gpt4 key购买 nike

这有点摸不着头脑,但也许我犯了一个明显的错误;我在 main.xml 中定义了一个 LinearLayout,其 ID 为“@+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() 回调函数。

这曾经工作得很好。然而,当我开始在这里和那里(主要是在其他 Activity 中)​​添加点点滴滴的代码时,它在某个时候停止工作,现在我总是通过 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:我尝试向 GUI 添加一个按钮,然后在该按钮的回调中调用包含 findViewById() 的代码,这很有效!这让我想起了可能存在某种竞争条件的想法。

最佳答案

这是问题评论的答案:

Do you have an inner class in your activity? I read the exception trace carefully: first com.company.PictureListPictureListActivity.onCreate then com.company.PictureListView.PictureListActivity.updateMainActivityScreen --> seems to me findViewById is called in a different object. Try moving the findViewByID into the onCreate and check if it works there.

似乎在某个开发阶段有一个内部类,后来被删除了。不知何故,项目文件没有适当更新。清理项目、刷新文件系统内容并重新构建项目应该会使事情再次恢复正常。

关于android - 尝试检索 LinearLayout 时出现奇怪的 NullpointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8204130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com