我有一个片段,在我的应用中说A,我使用
开始一个活动结果private void openComputationWindow(final int pos) {
// code here
result = new Button(mActivity);
result.setText("Select");
result.setTextColor(Color.WHITE);
result.setPadding(0, 30, 0, 20);
layout.addView(result);
result.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), SecondActivity.class);
getParentFragment().startActivityForResult(intent, 1);
}
});
});
// code here
}
第二个活动添加了一个片段。在这个片段中,我执行一些操作并将结果返回到上一个活动。
Intent intent = new Intent();
FragmentManager fm = getActivity().getSupportFragmentManager();
for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
fm.popBackStack();
}
getActivity().setResult(1, intent);
getActivity().finish();
}
问题是在我的片段A中我将这些数据用于textView结果中的setText,与我发起意图的textView相同。我将此textView声明为全局变量,以便可以在onActivity结果中访问它。但是在将文本设置为结果textView时,我得到空指针异常。我不知道为什么它变为null,片段是否被重新初始化?虽然我之前做过类似的任务,但我从来没有遇到过问题。有人可以帮帮我吗。谢谢!!
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
result.setText(path);
}
编辑:我必须提到我已经在我的应用程序的另一部分重用了该片段,并且我在那里执行相同的功能,并且它在那里完美地工作。然而,我有一点点差异。我有一个托管在片段内的视图寻呼机。我使用片段A作为viewpager选项卡之一以及另一个viewpager选项卡的子项,让我们说B.当我将它用作Fragment B的子项时出现问题。
答案 0 :(得分:-1)
我不知道变量结果的初始化位置。 你必须像这样初始化:
TextView result =(TextView)findViewById(R.id.YourTextView);