// 用来存放fragment的Activtiy必须实现这个接口
public interface OnHeadlineSelectedListener {
public void onArticleSelected(int position);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// 这是为了保证Activity容器实现了用以回调的接口。如果没有,它会抛出一个异常。
try {
mCallback = (OnHeadlineSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnHeadlineSelectedListener");
}
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// 发送时间给Activity宿主
mCallback.onArticleSelected(position);
}
public static class MainActivity extends Activity
implements HeadlinesFragment.OnHeadlineSelectedListener{
...
public void onArticleSelected(int position) {
// 用户选择了HeadlinesFragment中的头标题后
// 做一些业务操作
}
}
public static class MainActivity extends Activity
implements HeadlinesFragment.OnHeadlineSelectedListener{
...
public void onArticleSelected(int position) {
// 用户选中HeadlinesFragment中的头标题后
// 做一些必要的业务操作
ArticleFragment articleFrag = (ArticleFragment)
getSupportFragmentManager().findFragmentById(R.id.article_fragment);
if (articleFrag != null) {
// 如果 article frag 不为空,那么我们在同时显示两个fragmnet的布局中...
// 调用ArticleFragment中的方法去更新它的内容
articleFrag.updateArticleView(position);
} else {
// 否则,我们就是在仅包含一个fragment的布局中并需要交换fragment...
// 创建fragment并给他一个跟选中的文章有关的参数
ArticleFragment newFragment = new ArticleFragment();
Bundle args = new Bundle();
args.putInt(ArticleFragment.ARG_POSITION, position);
newFragment.setArguments(args);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
// 用这个fragment替换任何在fragment_container中的东西
// 并添加事务到back stack中以便用户可以回退到之前的状态
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
// 提交事务
transaction.commit();
}
}
}
public class MainActivity extends Activity implements MyListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager manager = getFragmentManager();
FragmentTransaction fragmentTransaction = manager.beginTransaction();
Fragment1 fragment1 = new Fragment1();
fragmentTransaction.add(R.id.layout1, fragment1);
fragmentTransaction.commit();
}
//在mainActivity中实现MyListener接口并实现它未实现的方法,在该方法中传递数据
@Override
public void send(String info) {
Toast.makeText(this, "Activity成功接收" + info, 0).show();
Fragment2 fragment2 = new Fragment2();
Bundle bundle = new Bundle();
bundle.putString("name", info);
fragment2.setArguments(bundle);
FragmentManager manager = getFragmentManager();
FragmentTransaction fragmentTransaction = manager.beginTransaction();
//替换该Fragment
fragmentTransaction.replace(R.id.layout2, fragment2, "fragment2");
fragmentTransaction.commit();
}
}
public class Fragment1 extends Fragment {
EditText et;
Button enter;
private String info;
@Override
public void onAttach(Activity activity) {
listener = (MyListener) activity;
super.onAttach(activity);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1_lay,container, false);
et = (EditText) view.findViewById(R.id.et);
enter = (Button) view.findViewById(R.id.enter);
enter.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
info = et.getText().toString();
listener.send(info);
}
});
return view;
}
public MyListener listener;
//定义一个接口
public interface MyListener{
public void send(String info);
}
}
public class Fragment2 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment2_lay,container, false);
TextView tv = (TextView) view.findViewById(R.id.tv);
tv.setText(getArguments().get("name")+"");//获取传递的值
Toast.makeText(getActivity(), "fragment"+getArguments().get("name")+"", 0).show();
return view;
}
}
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = fragmentManager.findFragmentById(R.id.frag);//静态加载在Activity布局中设置的Fragment的ID
MyFragment frag = (MyFragment) fragment;
frag.setText1("fragment静态传值");
private String text1;
public String getText1() {
return text1;
}
public void setText1(String text1) {
this.text1 = text1;
}
String value = getText1();
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有