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);
}
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();
}
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切换的方法
}
});
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();
}
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();
}
});
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 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
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
- fragment跳转fragment使用onActivityResult返回数据,但无法设置到fragment的textView中
- Android 跳转到fragment的onActivityResult
- 关于在fragment中无法执行到onActivityResult的问题
- 在fragment中使用onActivityResult
- fragment跳转到fragment
- activity无法直接跳转到fragment中
- Fragment通过OnActivityResult获取Activity返回数据
- fragment 跳转到另一个fragment中
- 在Fragment中也可以获得返回的数据,通过在方法OnActivityResult中
- Android Fragment中onActivityResult()方法获取不到返回数据或者无响应的解决办法
- Android Fragment中onActivityResult()方法获取不到返回数据或者无响应的解决办法
- Android Fragment中onActivityResult()方法获取不到返回数据或者无响应的解决办法
- Android Fragment中onActivityResult()方法获取不到返回数据或者无响应的解决办法
- Fragment中响应onActivityResult
- Fragment中 onActivityResult回调
- Fragment跳转到Activity,刚跳转就走了onActivityResult方法
- activity中跳转到fragment的思路
- Fragment中onActivityResult接受Activity数据问题
- 按下enter键让提交页面的某个方法
- 员工管理系统(数组版)
- 线程池
- abstract class和interface的区别
- poj 1830 开关问题(高斯消元法)
- fragment跳转fragment使用onActivityResult返回数据,但无法设置到fragment的textView中
- Android SO文件保护OLLVM混淆加固——混淆篇(二)
- 网站注册登录模块
- CUDA性能优化----warp深度解析
- Implement localization swift 本地化
- 八大排序
- 初学正则
- 海量数据处理的 Top K算法(问题) hashtable+小顶堆实现
- mysql 数据备份