#android #static #android-asynctask
#Android #статический #android-asynctask
Вопрос:
Я пытаюсь вызвать асинхронную задачу в каком-либо другом действии из фрагмента. Я пытался вызвать другой способ, но ничего из этого не сработало. Я просто хочу знать, как лучше всего вызвать статическую асинхронную задачу.Вот моя асинхронная задача:
static class MyAsync extends AsyncTask<Void, Void, Void> {
Context context;
String username, password;
private MyAsync(Context context, String username, String password) {
this.context = context;
this.username = username;
this.password = password;
}
ProgressDialog dialog;
private String response;
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog = ProgressDialog.show(context, "Connecting to Server","Getting Credentials"
, true);
}
@Override
protected Void doInBackground(Void... arg0) {
try {
ContentDownload download = new ContentDownload();
response = download.loginApi(agentId, password);
if(response.contains("Success")){
if(SettingHelper.getFirstCall(context)){
ContentDownload.CallApi(context);
SettingHelper.setFirstCall(context, false);
}
if(SettingHelper.getFirstLaunch(context)){
ContentDownload load = new ContentDownload();
load.callItemApi(context);
load.callActionApi(context);
SettingHelper.setFirstLaunch(context, false);
}
}
} catch (Exception e) {
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
if(response.contains("Success")){
context.startActivity(new Intent(context, AllActivity.class));
}else{
Toast.makeText(context, "Got back", Toast.LENGTH_SHORT).show();
}
dialog.dismiss();
}}
Я пытаюсь назвать это так:
LoginActivity.new MyAsync(getActivity).execute();
но он выдает ошибку
Комментарии:
1. Вы называете это точно так же, почему должна быть разница? Я предлагаю вам изучить Java, прежде чем пытаться написать приложение. Попробуйте это:
new LoginActivity.MyAsync(getActivity()).execute();
2. thanks..my ошибка ..спасибо @XaverKapeller
Ответ №1:
Если вы хотите использовать этот класс из своего Fragment
, предоставьте ему общедоступную видимость, а также общедоступный конструктор, а затем вы можете его вызвать:
new LoginActivity.MyAsync(getActivity())