Android 从AsyncTask调用类时替换活动参数
以下是我代码的一部分:Android 从AsyncTask调用类时替换活动参数,android,Android,以下是我代码的一部分: public class Login extends Activity { private class LoginUser extends AsyncTask<String, String, Boolean> { @Override protected void onPostExecute(Boolean returnResult) { DialogSelectAccount dsa=new DialogSelect
public class Login extends Activity {
private class LoginUser extends AsyncTask<String, String, Boolean> {
@Override
protected void onPostExecute(Boolean returnResult) {
DialogSelectAccount dsa=new DialogSelectAccount(getParent());
dsa.show();
}
}
}
public class DialogSelectAccount extends Dialog implements android.view.View.OnClickListener {
public DialogSelectAccount(Activity a) {
super(a);
}
}
公共类登录扩展活动{
私有类LoginUser扩展异步任务{
@凌驾
受保护的void onPostExecute(布尔返回结果){
DialogSelectAccount dsa=新建DialogSelectAccount(getParent());
dsa.show();
}
}
}
公共类对话框SelectAccount extends对话框实现android.view.view.OnClickListener{
公共对话框SelectAccount(活动a){
超级(a);
}
}
但当我运行应用程序时,它在公共对话框SelectAccount()下的“super(a)”处出现NPE错误
但是当我把代码改成
public class Login extends Activity {
private class LoginUser extends AsyncTask<String, String, Boolean> {
@Override
protected void onPostExecute(Boolean returnResult) {
test();
}
}
public void test(){
DialogSelectAccount dsa=new DialogSelectAccount(this);
dsa.show();
}
}
公共类登录扩展活动{
私有类LoginUser扩展异步任务{
@凌驾
受保护的void onPostExecute(布尔返回结果){
test();
}
}
公开无效测试(){
DialogSelectAccount dsa=新建DialogSelectAccount(此);
dsa.show();
}
}
它起作用了。那么,如果我不想像上面那样创建一个单独的方法并直接在onPostExecute中调用DialogSelectAccount,我应该传递什么作为参数呢
谢谢,dialog类需要一个上下文属性。 当您说getParent()时,我想它不会返回上下文 您可以将context属性保留在全局类中并检索它——尽管我不建议这样做 那么,如果我不想像上面那样创建一个单独的方法并直接在onPostExecute中调用DialogSelectAccount,我应该传递什么作为参数呢 答复:
DialogSelectAccount dsa=new DialogSelectAccount(Login.this);
这是一个相当普遍的java问题,有关内部类的更多信息,请阅读这里:使用
ActivityName.This