Android——Activity与Fragment通信
Activity向Fragment传递数据
- Activity.java
Bundle bundle = new Bundle();bundle.putString("message", "wonima");BlankFragment bf = new BlankFragment();bf.setArguments(bundle);
- Fragment.java
@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {Bundle bundle = getArguments();String msg = bundle.getString("message");View view = inflater.inflate(R.layout.fragment_blank, container, false);TextView tv = view.findViewById(R.id.tv);tv.setText(msg);return view;}
Fragment向Activity传递数据
主要通过一个接口作为回调的形式实现
- IFragmentCallback.java
public interface IFragmentCallback {void sendMsgToActivity(String string);String getMsgFromActivity(String msg);}
- Fragment.java
private IFragmentCallback fragmentCallback;public void setFragmentCallback(IFragmentCallback callback) {fragmentCallback = callback;}
Button btn = view.findViewById(R.id.btn);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {fragmentCallback.sendMsgToActivity("我尼玛");}});
- Activity.java
BlankFragment bf = new BlankFragment();bf.setFragmentCallback(new IFragmentCallback() {@Overridepublic void sendMsgToActivity(String string) {ToastUtil.show(SwitchFragmentActivity.this, string);}@Overridepublic String getMsgFromActivity(String msg) {return "";}});