从 AsyncTask 调用 class 时替换 activity 参数

Substitute for activity argument when calling a class from AsyncTask

这是我的部分代码:

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);
    }
}

但是当我运行该应用程序时,它在 public DialogSelectAccount();

下的 "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();
    }
}

有效。那么,如果我不想像上面那样创建一个单独的方法并直接在 onPostExecute 中调用 DialogSelectAccount,我应该将什么作为参数传递?

谢谢

对话框 class 需要上下文属性。 当你说 getParent() - 我想它没有 return 上下文。

您可以将上下文属性保存在全局 class 中并检索它 - 虽然我不建议这样做。

So what if I don't want to create a separate method like above and calls DialogSelectAccount directly inside the onPostExecute, what should I pass as the argument?

答案:

DialogSelectAccount dsa=new DialogSelectAccount(Login.this);

这是一个相当笼统的 java 问题,有关内部 类 的更多信息,请阅读此处:Getting hold of the outer class object from the inner class object