Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.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_Class_Events_Methods - Fatal编程技术网

Java 如何在触发类中对象的事件时对类调用方法

Java 如何在触发类中对象的事件时对类调用方法,java,android,class,events,methods,Java,Android,Class,Events,Methods,我有一个这样的代码,这只是一个示例类,带有一个事件侦听器的类的对象 public class MyActivity ..... { EditText something; AnyFragment frag; public MyActivity(){ frag = new AnyFragment(); } public void setText(String text){ something.setT

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

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

还是有别的办法

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

您可以这样做:

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);
     }
}
或使用
接口

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);
    }
}