目前我有两个java类,1个带有AsyncTask,另一个带有extend DialogFragment。
我想在 ChooseAddContact java 类中调用 CreateGroupTask(AsyncTask) 。 我尝试了几种推荐的方法来执行AsyncTask java,但都失败了。 有什么建议或解决方案吗?
public class ChooseAddContact extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.pick_add)
.setItems(R.array.contact_array, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (which == 0){
AddContactDialog dialog2 = new AddContactDialog();
dialog2.show(getFragmentManager(), "AddContactDialog");
} else if (which == 1){
**How should I CALL it here??
//new CreateGroupTask().execute();
//makegroup = new CreateGroupTask();
//makegroup.execute();
}**
}
});
return builder.create(); }
}
和
public class CreateGroupTask extends AsyncTask<Void, Void, String> {
private Context mContext;
private ProgressDialog pd;
public CreateGroupTask() {
}
public CreateGroupTask(Context mContext) {
super();
this.mContext = mContext;
}
@Override
protected void onPreExecute() {
pd = ProgressDialog.show(mContext, null, "Creating group...");
}
@Override
protected String doInBackground(Void... params) {
String chatId = ServerUtilities.create();
if (chatId == null) return null;
try {
...
} catch (SQLException sqle) {}
return chatId;
}
@Override
protected void onCancelled() {
pd.dismiss();
}
@Override
protected void onPostExecute(String result) {
pd.dismiss();
if (result != null) {
Toast.makeText(mContext, "Group created " + result, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(mContext, "Group creation failed. Please retry later.", Toast.LENGTH_LONG).show();
}
}
}
最佳答案
在对话框 fragment 中
要启动异步任务,您需要上下文。在对话框Fragment中,您可以通过调用getActivity()
来获取上下文;否则,您可以在对话框 fragment 的 onAttach()
生命周期方法中获取 context 或 Activity
引用。已经参数化的构造函数最好删除零参数化构造函数。
new CreateGroupTask(getActivity()).execute();
(OR)
private Activity activity;
onAttach(Activity activity){
this.activity=activity;
//store this activity reference
}
//Then Call
new CreateGroupTask(activity).execute();
关于java - 从 onClick(DialogInterface 对话框) 执行 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26842078/