fragment跳转fragment使用onActivityResult返回数据,但无法设置到fragment的textView中

本文解决了一个关于Fragment中数据更新不显示的问题。通过将TextView的设置操作从onViewCreated方法移至onResume方法,成功实现了数据的正确显示。文章详细记录了问题的定位过程及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

fragment数据有返回,但是将数据设置到textView中,设置后不显示,开始考虑是否是对象不同,导致设置的textView不属于当前显示的view,后经过调试,发现view都是从新find出来的,不存在这个问题,解决办法是将数据setText的方法推迟到了onResume()方法中,问题解决,但是没找到问题所在
在public void onViewCreated(View view, Bundle savedInstanceState) {}方法中调用
 if (!TextUtils.isEmpty(projectName)) {
   et_project_name.setText(projectName);
   et_project_name.setTag(projectID);
  }
无效,不改变该值,
在onResume方法中则设置成功
 @Override
 public void onResume() {
  if (!TextUtils.isEmpty(projectName)) {
   et_project_name.setText(projectName);
   et_project_name.setTag(projectID);
  }
  projectName = "";
  projectID = "";
  super.onResume();
 }

部分代码如下:
/****************第一步****************/
在BaseFragment中:
点击条目跳转到SearchProjectFragment
et_project_name.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {
    SearchProjectFragment fragment = SearchProjectFragment
      .newFragment(null);
    fragment.setTargetFragment(BaseAreaUseFragment.this,
      getActivity().RESULT_OK);
    openFragment(R.id.flt_fragment, fragment);//该方法是fragment切换的方法
   }
  });

 protected void openFragment(int resId, Fragment fragment) {
  String tag = fragment.getClass().getSimpleName();
 activity
    .getSupportFragmentManager()
    .beginTransaction()
    .setCustomAnimations(android.R.anim.slide_in_left,
      android.R.anim.slide_out_right)
    .replace(resId, fragment, tag).addToBackStack(tag).commit();
 }
/************************第二步************************/

点击listView条目跳转,把结果返回到上一个fragment(BaseFragment)
在SearchProjectFragment中:
lvProject.setOnItemClickListener(new OnItemClickListener() {

   @Override
   public void onItemClick(AdapterView<?> parent, View view,
     int position, long id) {
    Intent intent = new Intent();
    intent.putExtra(SEARCH_PROJECT_NAME,
      mDatas.get(position).get("名称"));
    intent.putExtra(SEARCH_PROJECT_ID,
      mDatas.get(position).get("信息"));
    setResult(getActivity().RESULT_OK, intent);
    getFragmentManager().popBackStack();
   }
  });


 protected void setResult(int result_OK, Intent intent) {
  Fragment targetFragment = getTargetFragment();
  if (targetFragment == null) {
   return;
  }
  getTargetFragment().onActivityResult(getTargetRequestCode(), result_OK,
    intent);
 }

/*******************结束后跳转到该fragment**********************/
在BaseFragment中:

 @Override
 public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (getActivity().RESULT_OK == requestCode && data != null) {
   projectName = data
     .getStringExtra(SearchProjectFragment.SEARCH_PROJECT_NAME);
   projectID = data
     .getStringExtra(SearchProjectFragment.SEARCH_PROJECT_ID);// 项目ID

  }

 }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值