【问题标题】:Interface lister接口监听器
【发布时间】:2014-12-09 05:34:12
【问题描述】:

我有一个 MyListner 接口

public interface MyListner{
    public void onOperationComplete();
}

我有两个实现 MyListner 的 Activity SignIn 和 SignUp

public class SignIn extends Activity implements MyListner{
      @Override
      public void onOperationComplete(){
           Log.e("SignIn","Operation Complete");
      }
      @Override
      protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.main);
           Operation.doOperation();
      }
}

public class SignUp extends Activity  implements MyListner{
      @Override    
      public void onOperationComplete(){    
           Log.e("SignUp","Operation Complete");
      }

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);    
          Operation.doOperation();

     }
 }

在两个 Activity 的 onCreate() 内部,我在 Operation 类中调用静态函数 doOperation() 以通过 Operation.doOperation() 进行一些操作。

public class Operation{
    publis static void doOperation(){
       ...........
       ...........
       ...........
       //here i want a callback to interface funtion onOperationComplete()
   }
}

我的要求是我想在所有实现 MyListner 的类中回调函数 onOperationComplete()

【问题讨论】:

    标签: java android interface


    【解决方案1】:

    让你的 doOperation 像这样:

    public class Operation{
         publis static void doOperation(MyListener  callBack){
         ...........
          ...........
         ...........
         //here i want a callback to interface funtion onOperationComplete()
            callBack.onOperationComplete();
      }
    
    }
    

    在您的活动中:

    public class SignIn extends Activity implements MyListner{
          @Override
          public void onOperationComplete(){
               Log.e("SignIn","Operation Complete");
          }
          @Override
          protected void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               setContentView(R.layout.main);
               Operation.doOperation(this);
          }
    }
    

    【讨论】:

      【解决方案2】:

      你可能想寻找观察者模式

      你可以让你的操作类单例

      在Operation类中添加“Collection listeners”属性

      添加一个名为“addListener(MyListener)”的公共方法,它将传递的参数存储到“listeners”属性中

      在Activity的onCreate()里面,调用

      Operation.getInstance().addListener(this);
      

      当你要执行操作时,调用

      for(MyListener listener : listeners){
          listener.onOperationComplete();
      }
      

      【讨论】:

        猜你喜欢
        • 2022-10-24
        • 1970-01-01
        • 1970-01-01
        • 2013-11-21
        • 2017-05-29
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 2013-12-17
        相关资源
        最近更新 更多