Fragment基本使用(三)——与Activity之间传递数据
2016-09-22 22:04
459 查看
一、Fragment向Activity传递数据
1,Fragment在Fragment中定义一个接口,然后在onAttach(Activity activity)方法中取得这个接口的实现。
/** * Created by chourongqishi on 16/9/21. */ public class FirstFragment extends Fragment { private TransDataToActivityListener listener; public interface TransDataToActivityListener { public void setDatas(String datas); } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_first, container, false); listener.setDatas("向Activity传递数据"); return view; } @Override public void onAttach(Context context) { super.onAttach(context); try { listener = (TransDataToActivityListener) context; } catch (ClassCastException e) { e.printStackTrace(); } } }
2,Activity接收数据
Activity中实现Fragment定义的接口,然后取得数据
public class MainActivity extends FragmentActivity implements FirstFragment .TransDataToActivityListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //创建要添加的Fragment对象 FirstFragment firstFragment = new FirstFragment(); //获取Fragment管理器 FragmentManager manager = getSupportFragmentManager(); //获取事物管理器 FragmentTransaction transaction = manager.beginTransaction(); //添加Fragment transaction.add(R.id.fl_container, firstFragment); //提交事物 transaction.commit(); } /** * 实现Fragment中的接口,获取数据 * * @param datas */ @Override public void setDatas(String datas) { Toast.makeText(this, datas, Toast.LENGTH_SHORT).show(); } }
二、Activity向Fragment传递数据
1,Activity:/** * 实现Fragment中的接口,获取数据 * * @param datas */ @Override public void setDatas(String datas) { //获取Fragment管理器 FragmentManager manager = getSupportFragmentManager(); //获取事物管理器 FragmentTransaction transaction = manager.beginTransaction(); //创建一个新Fragment对象 NewFragment newFragment = new NewFragment(); //添加数据 Bundle bundle = new Bundle(); bundle.putString("datas", datas); //向Fragment传递数据 newFragment.setArguments(bundle); //替换Fragment transaction.replace(R.id.fl_container, newFragment); //将上一个Fragment加入回退栈 transaction.addToBackStack(null); //提交事物 transaction.commit(); }
2,Fragment接收数据
/** * Created by chourongqishi on 16/9/21. */ public class NewFragment extends Fragment { private TextView tvShowDatas; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_new,container,false); tvShowDatas = (TextView) view.findViewById(R.id.tv_show_datas); Bundle bundle = getArguments(); String datas = bundle.getString("datas"); tvShowDatas.setText(datas); return view; } }
相关文章推荐
- 使用Intent在Activity与Fragment之间传递数据中存在的返回键错乱问题
- android: activity之间传递复杂数据类型[使用Serializable序列化或者Parcelable序列化]
- Bundle使用(不同的Activity之间传递数据)
- 使用Intent实现activity之间的数据传递
- Android中级教程之(五)----->不同Activity之间的数据传递,Bundle对象的使用!
- activity之间使用intent传递数据时,获取不到数据
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- Android中在Activity之间传递数据的另一种方法, 使用application context
- android 之 在Activity之间传递数据(使用意图传递数据之通用方式:)
- Android 笔记-Fragment 与 Activity之间传递数据
- android 开发手记 activity 之间数据的传递 intent 对象的使用
- 使用意图在Activity之间传递数据小插曲__传递自定义的序列化对象
- 使用Bundle在Activity之间传递数据
- Android开发之使用Intent在Activity之间传递数据
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- Android入门篇五:使用全局变量在Activity之间传递数据
- android之 在Activity之间使用意图传递数据(使用静态变量传递数据)
- Android入门篇二:使用意图在Activity之间传递数据
- Android入门篇四:使用全局变量在Activity之间传递数据
- 使用bundle在多个activity之间传递数据