方法 1 :
直接在Fragment 写
MainActivity main = (MainActivity) getActivity();
main.xx; // xx 是 MainActivity 里面的方法
代码少,不过如果代码要求高,就不建议了,如果getActivity 为空了,这个时候不就是出现问题了吗
方法2 :
在Fragment 里面定义一个接口
public interface testDataCallback {
void testData();
}
在调用的方法的地方调用代码如下
if (getActivity() instanceof testDataCallback) {
((testDataCallback) getActivity()).testData();
}
在 Activity 里面的实现这个接口testDataCallback
// 实现 testDataCallback
public class ShowActvity extends AppCompatActivity implements View.OnClickListener,
MeFragment.testDataCallback {
// 下面就在方法里面写下调用的方法了
@Override
public void testData() {
Log.e("********", "要传递的数据");
Toast.makeText(ShowActvity.this, "这个Toast代表一个方法吧", Toast.LENGTH_SHORT).show();
}
方法 3 :
在MainActivity 里面 写接口并写一个方法如下
private onIntentDataCallback intentDataCallback = new onIntentDataCallback() {
@Override
public void onIntentData() {
Log.e("********", "要传递的数据");
Toast.makeText(ShowActvity.this, "这个Toast代表一个方法吧", Toast.LENGTH_SHORT).show();
}
};
public interface onIntentDataCallback {
void onIntentData();
}
这里没有写set 值,放在了fragment 里面 代码如下
private ShowActvity.onIntentDataCallback intentDataCallback;
public void setonIntentDataCallback(ShowActvity.onIntentDataCallback intentDataCallback) {
this.intentDataCallback = intentDataCallback;
}
然后在调用的地方写
if (intentDataCallback != null) {
intentDataCallback.onIntentData();
}
这样还没有完呢,Fragment 的set 方法没有调用呢,所以最后还需要在Activity 里面 的点击切换Fragment 的地方调用一下set方法
hpFragment.setonIntentDataCallback(intentDataCallback);