一,Activity 传值到 Fragment.
前提: ViewPage使用下。
1,Activity页面
在外声明:
List<Fragment> 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);
结束。