【问题标题】:how to call method on a class while an event of object inside it is triggered如何在触发类中的对象事件时调用类的方法
【发布时间】:2023-03-21 07:59:02
【问题描述】:

我有一个这样的代码,这只是一个带有事件监听器的类对象的示例类。

public class MyActivity ..... {

     EditText something;
     AnyFragment frag;

     public MyActivity(){
          frag = new AnyFragment();
     }


     public void setText(String text){
          something.setText(text);
     }

}

public class AnyFragment extends DialogFragment implements AnyListener{

     public void onEvent(String text){
          // How to call method setText in class MyActivity from here ?
     }

}

我的问题是: 触发frag对象的事件时,如何调用MyActivity类中的setText方法?

或者还有其他方法可以做到这一点?

任何答案将不胜感激,谢谢!

【问题讨论】:

    标签: java android class events methods


    【解决方案1】:

    你可以这样做:

    public class MyActivity ..... {
    
         EditText something;
         AnyFragment frag;
    
         public MyActivity(){
              frag = new AnyFragment(this);
         }
    
         public void setText(String text){
              something.setText(text);
         }
    }
    
    public class AnyFragment extends DialogFragment implements AnyListener{
    
         private Context context;
    
         public AnyFragment(Context context) {
             this.context = context;
         }
    
         public void onEvent(String text){
             ((MyActivity)context).setText(text);
         }
    }
    

    或使用interface

    public class MyActivity ..... {
    
         EditText something;
         AnyFragment frag;
    
         public MyActivity(){
             frag = new AnyFragment();
             frag.setFragListener(new AnyFragment.FragListener() {
                 @Override
                 public void notifyActivity(String text) {
                     setText(text);
                 }
             });
         }
    
         public void setText(String text){
             something.setText(text);
         }
    }
    
    public class AnyFragment extends DialogFragment implements AnyListener{
    
        private FragListener listener;
    
        public setFragListener(FragListener listener) {
            this.listener = listener;
        }
    
        public void onEvent(String text){
            if(listener != null)
                listener.notifyActivity(text);
        }
    
        public interface FragListener {
            void notifyActivity(String text);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-05-31
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 2017-02-06
      • 1970-01-01
      • 2018-03-20
      相关资源
      最近更新 更多