我在选项卡1中有一个带有3个选项卡(片段)的应用程序我有一个像这样的
的异步方法 public class getUserGroupAsync extends AsyncTask<JSONObject,Void,JSONObject>{
String resp;
@Override
protected JSONObject doInBackground(JSONObject... params) {
JSONObject paramObj = new JSONObject();
try {
getToken();
method = "hostgroup.get";
paramObj.put("output","groupids");
response = sendJsonRequest.getResponse(method,paramObj,token);
resp = response.getString("result");
}
catch (JSONException e) {
System.out.println("Error "+e.getMessage());
}
}
}
当我从标签1切换到另一个标签页然后我返回标签1我想重新加载异步任务。
我试过这样:
public class ClientActivity extends ActionBarActivity{
protected void onCreate(Bundle savedInstanceState) {
public void onPageSelected(int position) {
if (position == 0){
systemStatus.new getUserGroupAsync().execute();
}
}
}
}
但是我得到一个NullPointerException? 有什么帮助吗?
答案 0 :(得分:0)
尝试将您的代码放入fragment1的onResume方法
@Override
public void onResume() {
super.onResume();
new getUserGroupAsync().execute();
}
答案 1 :(得分:0)
我假设您的代码中getUserGroupAsync
类位于另一个名为systemStatus
的类中?很难说,因为类通常首字母大写(GetUserGroupAsync
和SystemStatus
),其中对象的首字母为小写(getUserGroupAsync
和systemStatus
)。
如果getUserGroupAsync位于名为systemStatus的类中,可通过选项卡访问,那么最好的方法是以这种方式刷新数据:
class systemStatus extends Fragment {
private getUserGroupAsync asyncTask = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (asyncTask == null) {
asyncTask = new getUserGroupAsync();
asyncTask.execute();
}
}
@Override
public void onResume () {
asyncTask = new getUserGroupAsync();
asyncTask.execute();
}
//...
public class getUserGroupAsync extends AsyncTask<JSONObject,Void,JSONObject>{
//etc...