最近在做个项目用到在一个Activity跳转到另一个Activity,这另一个Activity又包含两个fragment。功能如图
一开始我在Fragment里用Intent传递数据,用startActivity,可以跳转界面但Activity接收不到数据。
后面我把startActivityForResult,在Activity可以接受到数据了。**但是!**因为用startActivityForResult的话,Activity会被重新onCreate,就是之前输入的内容都会清除。所以这个办法也不可行。
后面百度说用onSaveInstanceState、SharedPreferences也不可行。
最后搜到说在Fragment的父Activity定义一个静态变量的方法,终于可以了!
实现就是
在Fragment的父Activity里定义
public static String choice = null;
在Fragment里点击跳转时把内容赋值给该变量
SecondActivity.choice = value;
在原Activity取变量的值
edittext.setText(SecondActivity.choice);
SecondActivity.choice = null;
注意这里要重新把变量赋值为空,这样重新打开Activity时就不会赋值了
还有要把代码放在onStart里。
原Activity在跳转时只是onPause,重新被调用时不会再onCreate,而是直接onStart
困惑了我一早上的问题终于解决了,撒花!