gpt4 book ai didi

java - Android: NullPointerException,这里什么可以为空?

转载 作者:行者123 更新时间:2023-11-30 08:59:36 25 4
gpt4 key购买 nike

来自 Logcat:

11-26 06:43:40.643: E/AndroidRuntime(1163): FATAL EXCEPTION: AsyncTask #1
...
11-26 06:43:40.643: E/AndroidRuntime(1163): java.lang.RuntimeException: An error occured while executing doInBackground()
...
11-26 06:43:40.643: E/AndroidRuntime(1163): Caused by: java.lang.NullPointerException
...
11-26 06:43:40.643: E/AndroidRuntime(1163): at com.example.mymobiletest.SearchTask.doInBackground(SearchTask.java:134)

第 134 行是 ed = (EditText) mainActivity.findViewById(R.id.mainSearchActivity_editTextSearch);。现在这一行的执行表明 mainActivity(它是传递给此 AsyncTask 的构造函数的主要 Activity 的实例)不是 null .那么在这行中还有什么可能是 null,这会导致 NullPointerException

@Override
protected String doInBackground(Void... voidParameters) {
EditText ed=null;
if (mainActivity!=null) {
ed = (EditText) mainActivity.findViewById(R.id.mainSearchActivity_editTextSearch);
} else {
return "mainActivity is the Null culprit.";
}

编辑:- 我确实认为,因为我没有更改doInBackground() 中的 UI(但只能从 UI 读取),所以这应该不是问题。但是我仍然在 onPreExecute() 中尝试了这个,因为 onPreExecute 是在 UI 线程中执行的,但我仍然在同一条语句上得到 NPE。

@Override 
protected void onPreExecute() {
EditText ed=null;
if (mainActivity!=null) {
ed = (EditText) mainActivity.findViewById(R.id.mainSearchActivity_editTextSearch);//******NPE
} else {
Log.i(TAG, "mainActivity is the Null culprit.");
}
searchQuery = ed.getText().toString();
}

最佳答案

由于 doInBackground() 方法在与主线程不同的线程上运行,因此您不应在 doInBackground() 方法中访问 UI 元素。您应该在 OnProgress() 或 OnPostExcecute() 方法中访问 UI 元素。

关于java - Android: NullPointerException,这里什么可以为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27148461/

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