1.fragment中準備回調接口 接口中聲明傳值的回調方法
2.在fragment中定義變量 private MyListener myListener
3.重寫fragment中的onAttach()方法:listener = (MyLisener)getActivity();
4.fragment觸發事件時回傳值
5.Activity中實現回調接口 重寫回調方法獲取回傳的值並顯示
public class MyFragment extends Fragment {
private Button btn;
private TextView text;
private String str;
//定義回調接口
public interface MyListener{
public void sendValue(String value);
}
private MyListener myListener;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v=inflater.inflate(R.layout.fragment,null);
// 給fragment上的按鈕添加點擊事件
text = v.findViewById(R.id.tv_value);
btn = v.findViewById(R.id.btn_send);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//通過調用在activity中實現的接口方法,把數據傳給Mainactivity
myListener.sendValue("傳值");
}
});
return v;
}
//activity和fragment聯繫時候調用,fragment必須依賴activty
@Override
public void onAttach(Context context) {
super.onAttach(context);
//獲取實現接口的activity
myListener = (MyListener) getActivity();//或者myListener=(MainActivity) context;
}
}
public class MainActivity extends BaseActivity implements MyListener{
//myFragment中的接口實現
public void sendValue(String value) {
Log.e(TAG,value);
}
}