代码总结:Fragment之间传递参数和Fragment返回上一个Fragment传回数据
来源:互联网 发布:git 下常用linux命令 编辑:程序博客网 时间:2024/05/21 06:46
1 Fragment之间传递参数
FirstFragment中点击rl_changerole打开SecondFragment,并传递参数。
FirstFragment.java中部分代码:
@Overridepublic void onClick(View v) { switch (v.getId()) { case R.id.rl_changerole: SecondFragment crFragment = SecondFragment.newInstance(titleNames, titleType, parameter); crFragment.setTargetFragment(PersonFragment.this, 0); getFragmentManager().beginTransaction().replace(R.id.fl_content,crFragment) .addToBackStack(null) .commit(); break; default: break; }}其实也可以不用调用SecondFragment的newInstance方法创建,通过以下这段代码实现,效果是一样的。
SecondFragment secondFragment = new SecondFragment();Bundle args = new Bundle();args.putStringArrayList("paramStr",titleNames);args.putIntegerArrayList("paramInt",titleTypes);args.putInt("knowcurrent",user.knowcurrent);secondFragment.setArguments(args);secondFragment.setTargetFragment(FirstFragment.this, 0);getFragmentManager().beginTransaction().replace(R.id.fl_content,secondFragment) .addToBackStack(null) .commit();
SecondFragment.java类newInstance方法,在FirstFragment调用过。
public static SecondFragment newInstance(ArrayList<String> titleNames, ArrayList<Integer> titleTypes, int knowcurrent){ SecondFragment fragment = new SecondFragment(); Bundle args = new Bundle(); args.putStringArrayList("paramStr",titleNames); args.putIntegerArrayList("paramInt",titleTypes); args.putInt("param",parameter); fragment.setArguments(args); return fragment;}SecondFragment.java中获取FirstFragment传递过来的参数。
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_changrole,container,false); if(getArguments() != null){ titleNames = getArguments().getStringArrayList("paramStr"); titleTypes = getArguments().getIntegerArrayList("paramInt"); parameter= getArguments().getInt("param",-1); } return view; }
参数定义:
private ArrayList<String> titleNames;private ArrayList<Integer> titleTypes;private int parameter;
2 Fragment返回上一个Fragment传回参数问题
2.1如果直接返回不需要传参数:getFragmentManager().popBackStack();
2.2如果点击返回需要传回参数,在SecondFragment.java中通过以下实现。
rl_item.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sendResult(Activity.RESULT_OK); getFragmentManager().popBackStack(); } });sendResult方法
private void sendResult(int resultOk) { if(getTargetFragment() == null){ return; }else{ Intent i = new Intent(); i.putExtra("selectItem",selectItem); getTargetFragment().onActivityResult(getTargetRequestCode(),resultOk,i); } }
在FirstFragment.java中通过onActivityResult方法获取传回的参数,具体如下:
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode != Activity.RESULT_OK){ return; }else{ Integer str = data.getIntExtra("selectItem",-1); System.out.println("selectItem---"+str); } }
参考网上资料,包括https://www.kancloud.cn/digest/android-lxj/138593但不限于此。
3 在Fragment启动Activity
Fragment类提供了startActivity方法,Fragment启动Activity类与Activity类启动另一个Activity类方法一样。
1 1
- 代码总结:Fragment之间传递参数和Fragment返回上一个Fragment传回数据
- Fragment之间传递参数
- Android Activity、Fragment之间的数据传递和返回
- Fragment之间传递数据
- Fragment 之间传递数据
- fragment之间传递数据
- Fragment与Fragment之间的数据传递
- fragment和activity之间的数据传递
- Fragment和Activity之间的数据传递
- Activity和Fragment之间的数据传递
- Activity 和 Fragment 之间的数据传递
- Fragment和Activity之间的数据传递
- Activity和fragment之间传递数据(一)
- Activity和fragment之间传递数据(二)
- fragment之间的参数传递
- Fragment之间参数的传递
- Fragment之间的数据传递
- Fragment和Activity之间的数据传递(两种:Acitvity-->Fragment;Fragment---->Activity)
- java导入cer证书
- 算法导论第十三章-红黑树-Cpp代码实现
- Android studio 解决libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
- 说说Spring中的WebDataBinder
- iOS原生api post上传图片,上传视频
- 代码总结:Fragment之间传递参数和Fragment返回上一个Fragment传回数据
- ios中Search Paths的理解
- scala 变量
- Android Studio的设置和相关工具
- https://isux.tencent.com/svg-animate.html(svg动画)
- APP字体大小,不随系统的字体大小变化而变化的方法
- POJ1745
- Jira用户权限设置
- cocos2d-x 3.x学习之ScaleAction