java - Android AsyncTask onPostExecute 访问 GUI 元素给出空指针

标签 java android android-asynctask

我正在 Android 中执行 AsyncTask Web 请求。 Web 请求代码可以工作并返回变量,因为我可以将它们输出到日志中,无需担心并查看我需要查看的所有内容。

我一定是误解了AsyncTask,我以为在onPostExecute方法中我们可以访问GUI,但是当我尝试运行时我不断收到空指针>findViewById。

TextView textView;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView = (TextView) findViewById(R.id.outputView);
}

protected void onPostExecute(String result) {
    Log.w("CleverMining", "Posting results..." + result);
    textView.setText(result);
}

此处布局 XML - activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<Button android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/updateStats" android:text="@string/update_stats"></Button>

<TextView android:id="@+id/outputView" android:layout_width="match_parent" android:layout_height="match_parent" android:text="@string/empty"></TextView>

</LinearLayout>

因此日志可以看到正确的输出 ezpz,但是当我查找 TextView 时,我得到空指针,这意味着可能超出范围或其他内容。请帮忙?

如何通过 AsyncTask 的 onPostExecute 方法访问主 Activity 中的 TextView ?

更新:LOGCAT 输出位于 http://pastebin.com/ST7r9eAW

更新2: 创建一个类级别的 TextView ,然后在 onCreate() 中实例化它会给我同样的空指针错误。

最佳答案

任何初始化都应该在 Activity 的 onCreate() 方法内完成。所以请移步,

setContentView(R.layout.activity_main);
TextView textView = (TextView) findViewById(R.id.outputView);

到你的 onCreate 方法。并且只调用

textView.setText(result);

在 postExecute() 方法中。还要确保您的 textView 是类级别变量,以便在 onCreate() 之外访问它。

关于java - Android AsyncTask onPostExecute 访问 GUI 元素给出空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21951966/

相关文章:

java - 这个程序的效率如何?

java - 从 Java 向 Clojure 传递参数

android - 在 Selenium Android Webdriver 测试中难以使用 Xpath 和 CSS 查找元素

java - 异步任务中的 MediaPlayer : finalized without being released

android - 对需要响应才能继续的 api 调用使用 Asynctasks 有什么意义吗?

android - 与 Firestore 异步

用于在方法调用中显式指定泛型参数的 Java 语法

java - 继续在 TestNG 上测试失败

Android,从不同的 Activity 在缓存中保存和加载位图

像页脚一样的 Android 选项卡