Android(安卓)fragment 与Activity 互相传值。
16lz
2022-04-16
一,Activity 传值到 Fragment.
前提: ViewPage使用下。
1,Activity页面
在外声明: List list; //这是Fragment 的标题 private String[] mTitles = new String[]{"今日订单","昨日订单"};在onCreate 方法里面 list = new ArrayList<>(); Bundle bundle = new Bundle(); //MyEarningsFragment 也就是你的Fragment页面 Fragment fragment = new MyEarningsFragment(); //很显然这里面的值就是数据里面的,所以可以根据穿值来显示 bundle.putString("mTitles", mTitles[i]); fragment.setArguments(bundle);//** list.add(fragment); }
2,Fragment 页面中
//在外声明接受:String title;//在 onCreateView方法里面 savedInstanceState = getArguments(); title= savedInstanceState.getString("mTitles"); //这个时候通过title 传来的值就可以判断了。
二,Fragment 传值到Activity中。
首先这样想:传值,谁给谁传,就说明 谁在前面。这里当然先写Fragment了
1,Fragment
前提: 我在Fragment 中 进行了方法的查询。这个时候需要把结果,返回给Activity 中。
1)写个接口 /** * 给Activity传值的接口 */ public interface FragmentToActity { void setStr(double all, double s1, double s2,int p1); }2)在最外层声明 FragmentToActity fta;//接口声明。3)利用生命周期onAttach()方法。 @Override public void onAttach(Activity context) { super.onAttach(context); fta = (FragmentToActity) context; }4) 开始利用接口传值 public void test(){ double a1=10.0; double a2=20.0; double a3=20.0; int b=20; //把需要传的值给接口。 fta.setStr(a1,a2,a3,b); }
2,Activity中
前提是Activity 实现这个接口 implements FragmentToActity
//最外层 写你要赋值的数据double c1,c2,c3;int s; @Override public void setStr(double a1, double a2, double a3, int p1) { c1=a1; ..... }
补充:
在Acticvity 中调用Fragment中的方法。
<-- 这个地方前一张有写、--> for (int i = 0; i < titles.length; i++) { Fragment f = new TransactionFragment(); Bundle bundle = new Bundle(); bundle.putString("title",titles[i]); //很显然这里面的值就是数据里面的,所以,可以根据穿值来显示 f.setArguments(bundle); list.add(f); }//这个 就是TransactinFragment界面。 ((TransactionFragment)list.get(0)).Query(id);
结束。
更多相关文章
- android中的dispatchTouchEvent、onInterceptTouchEvent和onTouc
- android LinearLayout 动态添加子View
- Android(安卓)处理 Button 单击事件的三种方法
- android之壁纸机制
- [整理]android中几种常见的尺寸
- Android(安卓)一行代码全局应用内屏蔽系统设置字体和显示大小
- Android(安卓)Touch事件传递机制解析
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用