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
}
}
转载请注明原文地址: https://ju.6miu.com/read-6000.html