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

来源:互联网 发布:旺草胡蜂醋官方淘宝 编辑:程序博客网 时间:2024/05/17 22:38
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

  }

 }


0 0