Android之Fragment动态加载、Fragment与Activity传值通信
来源:互联网 发布:java研发工程师 知乎 编辑:程序博客网 时间:2024/05/11 23:45
1、Fragment动态加载
Fragment动态加载:撰写代码将Fragment灵活添加到一个Activity 中。add()添加、remove()移除、替换等。
(1)处理Fragment事务
FragmentManager fragmentManager = getFragmentManager(); //获得Fragment的管理者FragmentTransaction beginTransaction = fragmentManager.beginTransaction(); //开启Fragment的事务,从而进行添加移除操作每一个事务都是同时执行一套变化,可以在一个事务中设置你所有执行的变化,包括add()、remove()、replace(),然后提交给Activity(commit())。
如果允许用户通过按下BACK键返回到前一个Fragment状态,调用commit()之前还要加入addToBackStack()方法。
case R.id.second://演示动态加载DongTaiMyFragment dongTaiMyFragment=new DongTaiMyFragment(); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction beginTransaction = fragmentManager.beginTransaction(); beginTransaction.add(R.id.frame, dongTaiMyFragment); //通过事务去管理Fragment beginTransaction.addToBackStack(null); //处理返回键 beginTransaction.commit(); //提交break;
2、与Activity传值通信
A. Fragment调用getActivity()方法获取它所在的Activity;Activity调用FragmentManager的findFragmentById()或者findFragmentByTag()方法获取Fragment;
B. Activity——》Fragment:在Activity中创建Bundle数据包,并调用Fragment的setArguments(Bundle bundle)方法;
Fragment——》Activity:需要在Fragment中定义一个内部回调接口,让包含该Fragment的Activity实现该回调接口。这样Fragment可调用回调方法将数据传递给Activity。
Activity:
public class MainActivity extends Activity implements MyListenter{private EditText editText;private Button activitySendBtn;//private TextView textView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);editText=(EditText) findViewById(R.id.activitySendET);activitySendBtn=(Button) findViewById(R.id.btnSend);activitySendBtn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString text = editText.getText().toString();Bundle bundle=new Bundle();bundle.putString("name", text);MainFragment fragment=new MainFragment();fragment.setArguments(bundle);/*Intent intent=new Intent(MainActivity.this, FragmentActivity.class);startActivity(intent);*///动态加载FragmentManager fragmentManager = getFragmentManager();FragmentTransaction transaction = fragmentManager.beginTransaction();transaction.add(R.id.activity, fragment,"fragment");transaction.commit();Toast.makeText(MainActivity.this,"向Fragment询问姓名:" + text, Toast.LENGTH_SHORT).show();}});//静态加载FragmentManager manager = getFragmentManager();Fragment findFragment = manager.findFragmentById(R.id.sendFragment);MainFragment frag=(MainFragment) findFragment;frag.setStr("Fragment静态传递值");}@Overridepublic void answer(String name) {// TODO Auto-generated method stubToast.makeText(MainActivity.this, "已成功接收到:"+name, Toast.LENGTH_LONG);}}
Fragment:
public class MainFragment extends Fragment {private String name="Fragment回复姓名:Jone";private TextView textView;private Button button;//内部接口public interface MyListenter{public void answer(String name);}public MyListenter myListenter;@Overridepublic void onAttach(Activity activity) {// TODO Auto-generated method stubmyListenter=(MyListenter) activity;super.onAttach(activity);}//静态加载传递private String str="";public String getStr() {return str;}public void setStr(String str) {this.str = str;}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubView view =inflater.inflate(R.layout.fragment_main,container, false);textView=(TextView) view.findViewById(R.id.questionText);String text=getArguments().getString("name").toString();textView.setText(text);Toast.makeText(getActivity(), "成功接收到问题:"+text, Toast.LENGTH_SHORT).show();//myListenter.answer(name);//button=(Button) view.findViewById(R.id.fragBtn);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString value=getStr();Toast.makeText(getActivity(), "value="+value, Toast.LENGTH_SHORT);}});return view;}}
0 0
- Android之Fragment动态加载、Fragment与Activity传值通信
- Android之Fragment动态加载、Fragment与Activity传值通信
- Android自助餐之Fragment与Activity通信
- 详解Android Fragment之五:Fragment与Activity的通信
- Fragment跳转之Fragment与Activity通信
- 【Android】Fragment与Activity通信
- Fragment与Activity通信 Android
- Android面试篇之Activity与Fragment、Fragment与Fragment之间的通信
- Fragment与Activity通信
- Fragment与Activity通信
- Fragment与Activity通信
- Fragment与Activity通信
- Fragment与Activity通信
- Fragment与Activity通信
- Fragment与Activity通信
- Activity与Fragment通信
- Fragment与Activity通信
- Fragment与Activity通信
- windbg 如何再内核模式调试用户空间的程序
- 从入门到精通我是这样学习算法的
- oracle数据库重启的方法
- 行为型:设计模式之模版方法模式(十七)
- [java] interface
- Android之Fragment动态加载、Fragment与Activity传值通信
- Android EditText输入光标居于开头最开始位置
- 获取应用的常用信息
- iOS开发----Xcode第三方插件command+B后安装不了的解决办法
- Andoird listview 多选、单选、删除
- casperjs#3#截图问题
- 自定义控件----自定义属性
- 图片存储在相册
- Codeforces Educational Round 3