我为多个Fragments
创建了相同的View
,即我有一个Fragment
,如TemplateController
,并在每个项目点击ListView
相同{ {1}}已加载,例如,
Fragment
对于列表项的每次点击,我都设置了public void onItemClick(AdapterView<?> parent, View view, int position,long id)
{
switch (position) {
case 0:
Constant.TAG_VALUE = "Network";
FragmentManager mFragmentManager = getFragmentManager();
TemplateController mTemplateController = new TemplateController();
//mFragmentManager.beginTransaction().replace(R.id.idc_container, mTemplateController).commit();
mFragmentManager.beginTransaction().addToBackStack(getTag()).add(R.id.idc_container, mTemplateController).commit();
break;
default:
break;
}
}
。当我移动下一个视图时,加载了相同的片段。下一个屏幕我有一个TableLayout。现在,当我单击该TableLayout的任何行时,我再次设置TAG_VALUE。
TAG_VALUE
rowLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (NcrPulseConstants.TAG_VALUE == "Unresolved") {
NcrPulseConstants.TAG_VALUE = "ListATM";
int tag = (Integer) v.getTag();
switch (tag) {
case 0:
fileName = "a.txt";
break;
case 1:
fileName = "b.txt";
break;
default:
break;
}
String jsonLocation = Utility.loadStringFromAsset(
getActivity(), fileName);
FragmentManager mFragmentManager = getFragmentManager();
TemplateController templateController = new TemplateController(
jsonLocation);
mFragmentManager.beginTransaction()
.addToBackStack(getTag())
.add(R.id.idc_container, templateController)
.commit();
}
}
});
是一行rowLayout
,每行加载不同的JSON。
我的问题是,当我点击特定行时,一个视图打开,它是相同的TableLayout
,然后我移动到下一个屏幕然后我按下物理后退按钮返回到此屏幕然后我移动到右侧屏幕,但是当我点击另一行然后再次打开下一个屏幕,而不是所需的scree,意味着当我点击后退按钮然后TemplateController
不更改它们的值,然后我在哪里更改TAG_VALUE的值当我按后退按钮。
感谢任何帮助。 感谢
答案 0 :(得分:0)
此处,您必须在向后移动时从后堆栈中清除标记。 我的意思是只清除当前可见片段标记的上方标记。当你向后移动从backstack移除当前标签然后移动前一个片段。得到它了?