【发布时间】:2014-04-15 06:14:16
【问题描述】:
我有一个名为 MainActivity.java 的类,它调用 AsyncTask 类。最后一个类有一个findViewById(),在执行时返回这个错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View <mypackage>.MainActivity.findViewById(int)' on a null object reference
我不明白如何编辑位于R.layout.activity_main 中的ImageView,然后AsyncTask 完成工作。
MainActivity.java
public class MainActivity extends Activity {
public MainActivity() {}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Connection().execute();
}
}
Connection.java
public class Connection extends AsyncTask<String, Void, String> {
public String result;
//I know, this isn't correct, how can i do?
public MainActivity MainActivity;
@Override
protected String doInBackground(String... arg0) {
// TODO Auto-generated method stub
//...
return "a string";
}
protected void onPostExecute(String result) {
super.onPostExecute(result);
//...
// Where the error is generated
ImageView image = (ImageView) MainActivity.findViewById(R.id.image);
//...
}
}
【问题讨论】:
-
你不能那样做。您需要系统提供的 Activity 对象的实际实例。通常,您不希望从另一个类修改 Activity 的 UI,但如果必须,您必须将 Activity 对象传递给该类,以便它可以使用该对象的实例方法。
-
@DoctororDrive 实际上我要求更多地了解 java :)
标签: java android android-asynctask