当我按下它时,我在Fragment中有一个按钮我为结果打开一个新活动但当我返回到我的片段时,我发现所有UI元素= null
请找到代码
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getActivity(), MyActivity.class);
getActivity().startActivityForResult(intent, "3030");
}
});
当从活动中选择一个值时,我应该回到片段并将数据设置为活动中的textview。
Intent intent = Activity.this.getIntent();
intent.putExtra("categoryId", id);
intent.putExtra("categoryName", name);
setResult(RESULT_OK, intent);
finish();
我把它放在包含片段
的活动中protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 3030 && resultCode == RESULT_OK) {
Fragment fragment = mTabFragments.get(MyFragment.class.getName());
if (fragment != null) {
fragment.onActivityResult(requestCode, resultCode, data);
}
}
}
和片段
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 3030 && resultCode == Activity.RESULT_OK) {
int categoryId = data.getIntExtra("categoryId", 0);
String categoryName = data.getStringExtra("categoryName");
mChooseCategoryTextView.setText(categoryName);
}
}
现在mChooseCategoryTextView为空的问题
谁能告诉我这是什么问题?
答案 0 :(得分:0)
获得片段
的结果startActivityForResult(intent,REQ_CODE);
不
getActivity().startActivityForResult(intent,REQ_CODE);
答案 1 :(得分:0)
我认为你如何初始化这个观点的问题? 由于您正在进行另一项活动,因此您的整个片段将重建或仅在ViewCreated上再次召回。
所以我的猜测是你不会在一个片段回调中重新初始化或覆盖mChooseCategoryTextView引用。
尝试添加更多日志并检查此参考的内容
答案 2 :(得分:0)
我认为错误在行中
Fragment fragment = mTabFragments.get(MyFragment.class.getName());
我在某种适配器中假设mTabFragments
?我必须查看它的代码才能确定,但听起来它并没有返回正确的片段。确保它返回的引用与屏幕上显示的片段相同。