Вызов статической асинхронной задачи из другого фрагмента

#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())