FragmentActivity向Fragment中传递参数我想不用我说太多大家都知道,在此只做简单的说明:
FragmentActivity传递参数给Fragment使用:
Bundle bundle = new Bundle();
Fragment.setArguments(bundle)
Fragment中获取数据使用:
Bundle bundle = getArguments();
下面我重点说下FragmentActivity与Fragment间的相互通信
首先定义一个公共接口
/**
* FragmentActivity 与 Fragment交互接口
*/
public interface IMutualListener {
/**
* FragmentActivity用来改变Fragment中的展示内容
*/
void actMsg(String str);
/**
* Fragment用来改变FragmentActivity中的展示内容
*/
void fragmentMsg(String str);
}
FragmentActivity与Fragment分别去实现这个接口, 且Activity中需要重写onAttachFragment方法、而Fragment中需要重写onAttach方法事例如下:
/**
* FragmentActivity中调用接口的方式
*/
public class MainActivity extends FragmentActivity implements IMutualListener{
private IMutualListener iMutualListener;
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView)findViewById(R.id.tv)
//改变fragment中的值
findViewById(R.id.btn).setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
//FragmentActivity调用Fragment中方法前需要判断该Fragment是否为null
iMutualListener.actMsg("我是来自FragmentActivity的信息");
}
});
}
@Override
public void onAttachFragment(Fragment fragment) {
try{
iMutualListener = (IMutualListener)fragment;
}catch (Exception e){}
super.onAttachFragment(fragment);
}
/**
* FragmentActivity用来改变Fragment中的展示内容
*/
@Override
public void actMsg(String str) {}
/**
* Fragment用来改变FragmentActivity中的展示内容
*/
@Override
public void fragmentMsg(String str) {
tv.setText(str);
}
}
/**
* Fragment中调用接口的方式
*/
public class FragmentA extends Fragment implements IMutualListener{
private IMutualListener iMutualListener;
private TextView tv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = View.inflate(getActivity(), R.layout.fragment_a_page, null);
tv = (TextView) view.findViewById(R.id.tv)
//改变fragmentActivity中的值
view.findViewById(R.id.btn).setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
iMutualListener.fragmentMsg("我是来自Fragment的信息");
}
});
}
@Override
public void onAttach(Activity activity) {
try {
iMutualListener = (IMutualListener)activity;
}catch (Exception e){
throw new ClassCastException(activity.toString() + "must implement iMutualListener");
}
super.onAttach(activity);
}
/**
* FragmentActivity用来改变Fragment中的展示内容
*/
@Override
public void actMsg(String str) {
tv.setText(str);
}
/**
* Fragment用来改变FragmentActivity中的展示内容
*/
@Override
public void fragmentMsg(String str) {}
}
FragmentActivity与Fragment的交互主要部分就是onAttachFragment与onAttach方法的重写,希望本篇文章能对你有所帮助!