在 onPostExecute 中从另一个 class 调用方法导致 nullPointerException
Calling method from another class in onPostExecute causing nullPointerException
这也可能对某人有帮助:How to get the result of OnPostExecute() to main activity because AsyncTask is a separate class?
我正在从 onPostExecute()
中的另一个 class 调用方法。
我假设 onPostExecute()
在 doInBackground(String... params)
之后调用,根据文档和调试器,这是正确的。
调用方法:
protected void onPostExecute(String result) {
CreateHangOut crtHO = new CreateHangOut();
crtHO.createHangOut(result);
}
调用的部分方法,导致 NPE(方法的第一行):
public void createHangOut(String location) {
String city=autocompleteTV.getText().toString();
}
自动完成 TextView
(autocompleteTV
) 在 activity.
的创建时初始化
我是这样称呼 AsyncTask
:
create.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new
HTTPRequest().execute((autocompleteTV.getText()).toString());
}
});
调用 onCreate 的方法(activity 从按钮被点击的地方):
private void initialize() {
gAPI= new GoogleAPIAutocomplete();
autocompleteTV = (AutoCompleteTextView)
findViewById(R.id.crtHOLocOptionsTV);
setUpAutocomplete();
create = (Button) findViewById(R.id.crtHOCreateBtn);
name =(EditText) findViewById(R.id.crtHONameET);
create.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new
HTTPRequest().execute((autocompleteTV.getText()).toString());
}
});
}
因为 createHangOut
方法在 CreateHangOut
Activity 中,所以不需要创建新对象来访问方法,只需使用扩展 class 的方法名称调用它13=] class 是 CreateHangOut
的内部 class :
protected void onPostExecute(String result) {
CreateHangOut.this.createHangOut(result);
}
这也可能对某人有帮助:How to get the result of OnPostExecute() to main activity because AsyncTask is a separate class?
我正在从 onPostExecute()
中的另一个 class 调用方法。
我假设 onPostExecute()
在 doInBackground(String... params)
之后调用,根据文档和调试器,这是正确的。
调用方法:
protected void onPostExecute(String result) {
CreateHangOut crtHO = new CreateHangOut();
crtHO.createHangOut(result);
}
调用的部分方法,导致 NPE(方法的第一行):
public void createHangOut(String location) {
String city=autocompleteTV.getText().toString();
}
自动完成 TextView
(autocompleteTV
) 在 activity.
我是这样称呼 AsyncTask
:
create.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new
HTTPRequest().execute((autocompleteTV.getText()).toString());
}
});
调用 onCreate 的方法(activity 从按钮被点击的地方):
private void initialize() {
gAPI= new GoogleAPIAutocomplete();
autocompleteTV = (AutoCompleteTextView)
findViewById(R.id.crtHOLocOptionsTV);
setUpAutocomplete();
create = (Button) findViewById(R.id.crtHOCreateBtn);
name =(EditText) findViewById(R.id.crtHONameET);
create.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new
HTTPRequest().execute((autocompleteTV.getText()).toString());
}
});
}
因为 createHangOut
方法在 CreateHangOut
Activity 中,所以不需要创建新对象来访问方法,只需使用扩展 class 的方法名称调用它13=] class 是 CreateHangOut
的内部 class :
protected void onPostExecute(String result) {
CreateHangOut.this.createHangOut(result);
}