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