Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从AsyncTask调用类时替换活动参数_Android - Fatal编程技术网

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