Java 无法从异步任务更新UI

Java 无法从异步任务更新UI,java,android,android-asynctask,Java,Android,Android Asynctask,我知道这很可能会被标记为重复,但这让我非常沮丧。在我的一生中,我无法找到从异步任务修改textview的方法。这是我在MainActivity类中的函数: public void updateTextView(String data){ TextView textview = (TextView)findViewById(R.id.TextView1); textview.setText(data); } 然后在我的任务中 @Override protected void on

我知道这很可能会被标记为重复,但这让我非常沮丧。在我的一生中,我无法找到从异步任务修改textview的方法。这是我在MainActivity类中的函数:

public void updateTextView(String data){
    TextView textview = (TextView)findViewById(R.id.TextView1);
    textview.setText(data);
}
然后在我的任务中

@Override
protected void onPostExecute(String result) {
    MainActivity ma = new MainActivity();
    ma.updateTextView(result);
}
但是,在运行此代码和任何涉及尝试从AsyncTask修改TextView的修改之后,我得到:

java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“android.view.Window$Callback android.view.Window.getCallback()”

但是,当从主线程调用相同的函数时,它运行良好


任何帮助都将不胜感激。

您不能从活动中创建新对象并使用它。尝试获取活动的引用

将此代码添加到AsyncTask类

MainActivity activity;

public void setContext(MainActivity activity){
    this.activity = activity;
  }
也编辑这个

@Override
protected void onPostExecute(String result) {
     activity.updateTextView(result);
   }
在活动中创建AsyncTask对象时调用此方法

//at is the object you created from your AsyncTask Class
at.setContext(this);

你不能从一个活动中创建一个新对象并使用它。尝试获取活动的引用

将此代码添加到AsyncTask类

MainActivity activity;

public void setContext(MainActivity activity){
    this.activity = activity;
  }
也编辑这个

@Override
protected void onPostExecute(String result) {
     activity.updateTextView(result);
   }
在活动中创建AsyncTask对象时调用此方法

//at is the object you created from your AsyncTask Class
at.setContext(this);

MainActivity ma=新的MainActivity()
???您正在尝试创建一个新活动?可能重复的不创建MainActivity的新实例!而是在创建AsyncTask时将实例作为参数传递,并使用它调用该方法。切勿对任何活动类调用
new
。你只是在问这个问题。比如
MainActivity ma=newmainActivity()
???您正在尝试创建一个新活动?可能重复的不创建MainActivity的新实例!而是在创建AsyncTask时将实例作为参数传递,并使用它调用该方法。切勿对任何活动类调用
new
。你只是在问这个问题,喜欢很好!谢谢你不必使用runOnUiThread之类的东西。已经在UI线程上调用了AsyncTask中的OnPostExecute。非常好!谢谢你不必使用runOnUiThread之类的东西。已在UI线程上调用AsyncTask中的OnPostExecute。