Android fragment 与Activity 互相传值。
16lz
2021-01-23
一,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 处理 Button 单击事件的三种方法
- [Android Studio导入第三方类库方法] Error:(19, 23) 错误: 程序
- Android 中数据库查询方法query()中的selectionArgs的用法
- android客户端向服务器端验证登陆方法的实现2
- Unity-Android通信:AndroidJava 使用Unity c#编写Android程序调用
- Android例子—设置Activity全屏的三种方法
- Android stuio在MainActivity中运行java的main方法
- android中的提示信息显示方法(toast应用)