这是从一个MainActivity中的一个Fragment穿值到另一个Activity中去。(Fragment是用ViewPager的)
sp那个是一个值 可以不用管
Intent intent_budget = new Intent(getActivity(), BudgetSetActivity.class);
String defaultBudgetValue =
SpUtils.getString(getActivity(), ConstantValue.BUDGET_SET, "6000.00");
intent_budget.putExtra("DefaultBudgetVaule", defaultBudgetValue);
startActivityForResult(intent_budget, 0);
然后我在另一个Activity中接受这个值是可以的,然后我想用另一个intent返回一个值给前面的Fragment中:log中测试这个值已经正确放进来intent的extra中;
String SetValue = "SetValues";
intent.putExtra(SetValue, userValue + "0");
this.setResult(ResultCode, intent);
Log.i(log, intent.getStringExtra(SetValue));
finish();
log日志如下:
值为900.86
04-03 11:35:18.055 641-655/system_process I/ActivityManager: Displayed com.chase.cn.money_of_my/activity.BudgetSetActivity: +1s550ms
04-03 11:35:24.555 4585-4585/com.chase.cn.money_of_my I/BudgetSetActivity: 900.86
04-03 11:35:24.559 641-691/system_process W/ActivityManager: Duplicate finish request for ActivityRecord{5299c6dc u0 com.chase.cn.money_of_my/activity.BudgetSetActivity t22 f}
问题来了,我在返回以后那个Fragment中使用了onActivityResult
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0 && resultCode == 101) {
String SetValue = data.getStringExtra("SetValues");
tv_tab01_month_budget.setText(SetValue);
Log.i(log,"SetValues"+SetValue);
}
}
但是获取的值完全不是传过来的。
log如下:
04-03 11:35:24.575 4585-4585/com.chase.cn.money_of_my I/Fragment_tab01: SetValues6000.00
为什么呢 小白求解 感谢大神们!!!
你的Code值对不,还有fragment在显示之后不能改变上面的数据
fragment中的onActivityResult 并不会被调用。
需要重写其父类的onActivityResult方法
然后在父类的onActivityResult方法中,通过fragmentManager得到子fragment并调用其onActivityResult。
fragment的onActivityResult才会真正执行。