Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在异步类中重写和重写_Java_Android_Android Asynctask_Overriding - Fatal编程技术网

Java 在异步类中重写和重写

Java 在异步类中重写和重写,java,android,android-asynctask,overriding,Java,Android,Android Asynctask,Overriding,我有一个用于各种异步任务的类。有时,我需要隐藏某些按钮、视图或任何基于活动或动作的内容。需要设置可见性的对象可能会有所不同 MyAsyncTask public class MyAsyncTask extends AsyncTask<String, Void, JSONObject> { private ProgressBar mProgressBar; public ASynceResponse delegate = null; publ

我有一个用于各种异步任务的类。有时,我需要隐藏某些按钮、视图或任何基于活动或动作的内容。需要设置可见性的对象可能会有所不同

MyAsyncTask

    public class MyAsyncTask extends AsyncTask<String, Void, JSONObject> {

    private ProgressBar mProgressBar;
    public ASynceResponse delegate = null;

        public MyAsyncTask() {
          this.delegate = delegate;
          this.mProgressBar = progressBar;
        }

        @Override
        protected void onPreExecute() {
           mProgressBar.setVisibility(View.VISIBLE);
        }

        @Override
        protected JSONObject doInBackground(String... params) {
            return; 
        }

        @Override
        protected void onPostExecute(JSONObject data) {
            mProgressBar.setVisibility(View.GONE);
            delegate.processResults(data);
        }


    public interface ASyncResponse {
        void processResults(JSONObject data);
    }

    }
我在活动中传入一个进度条,显示正在发生的后台操作

但我想要更多。我想
Overide
我的类
onPreExecute
onPostExecute
隐藏/显示其他项目

可能吗

但我正试图找到一种方法来覆盖
onPreExecute
以隐藏任何类型(或多种类型)视图

这样的事情可能吗

MyAsyncTask myAsyncTask = new MyAsyncTask(new onPreExecute(
                // hide a view
));

您可以使用界面执行此操作。

public class MyAsyncTask extends AsyncTask<String, Void, JSONObject> {

   private ProgressBar mProgressBar;
   public ASynceResponse delegate = null;

       public MyAsyncTask() {
         this.delegate = delegate;
         this.mProgressBar = progressBar;
       }

       @Override
       protected void onPreExecute() {
          delegate.myOnPreExecute();
          mProgressBar.setVisibility(View.VISIBLE);
       }

       @Override
       protected JSONObject doInBackground(String... params) {
           return; 
       }

       @Override
       protected void onPostExecute(JSONObject data) {
           mProgressBar.setVisibility(View.GONE);
           delegate.processResults(data);
       }


       public interface ASyncResponse {
           void processResults(JSONObject data);
           void myOnPreExecute();
       }

   }

您可以从
onPreExecute
onPostExecute
回调活动,并相应地更新活动中的视图<代码>新建onPreExecute(错误。您还可以在活动本身中更新进度条(隐藏或显示)但是我如何告诉onPreExecute@Raghunandan?ackoverflow.com/questions/9963691/android-asynctask-sending-callbacks-to-ui我想做什么呢?你知道在
onPreExecute
中应该做什么,只要在Activity中的callback方法中实现同样的功能,你需要在
ASyncResponse
界面中使用另一个方法nswer i postedOh ok!我没有想到仅仅创建另一个委托方法调用。
public class MyAsyncTask extends AsyncTask<String, Void, JSONObject> {

   private ProgressBar mProgressBar;
   public ASynceResponse delegate = null;

       public MyAsyncTask() {
         this.delegate = delegate;
         this.mProgressBar = progressBar;
       }

       @Override
       protected void onPreExecute() {
          delegate.myOnPreExecute();
          mProgressBar.setVisibility(View.VISIBLE);
       }

       @Override
       protected JSONObject doInBackground(String... params) {
           return; 
       }

       @Override
       protected void onPostExecute(JSONObject data) {
           mProgressBar.setVisibility(View.GONE);
           delegate.processResults(data);
       }


       public interface ASyncResponse {
           void processResults(JSONObject data);
           void myOnPreExecute();
       }

   }
class Demo implements ASyncResponse{
      .....
      void processResults(JSONObject data){
      ....
      }
      void myOnPreExecute(){
        // do your stuff for pre execute
      }

   }