Android 在回退期间在片段中保留以前的值
我已经为多个Android 在回退期间在片段中保留以前的值,android,Android,我已经为多个视图创建了相同的片段,也就是说,我有一个片段,比如模板控制器,并且在每个项目上单击列表视图相同的片段,比如 public void onItemClick(AdapterView<?> parent, View view, int position,long id) { switch (position) { case 0: Constant.TAG_VALUE = "Network"; F
视图创建了相同的片段
,也就是说,我有一个片段
,比如模板控制器
,并且在每个项目上单击列表视图
相同的片段
,比如
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;
}
}
rowLayout
是一行TableLayout
,每行加载不同的JSON
我的问题是,当我单击特定行时,一个视图打开,它与TemplateController
相同,然后我移动到下一个屏幕,然后通过按物理后退按钮返回此屏幕,然后移动到右屏幕,但当我单击另一行时,再次打开下一个屏幕,而不是所需的屏幕,意思是当我点击后退按钮时,然后标记值
不更改其值,然后当我按下后退按钮时,更改标记值的值
感谢您的帮助。
谢谢这里,当你移到后面时,你必须清除后面堆栈中的标签。
我的意思是从当前可见片段标记中清除上面的标记。向后移动时,从backstack中移除当前标记,然后移动上一个片段。明白了吗 不,我还没有清除标签。在哪个位置清除tag.in onBackPressed()方法此方法是活动而不是片段。请提供一些代码。@Override public void onBackPressed(){//TODO自动生成的方法存根碎片管理器manager=getSupportFragmentManager();Log.i(“Count”,“Count=”+manager.getBackStackEntryCount());if(manager.getBackStackEntryCount()>0){manager.popBackStack(yourtag);manager.beginTransaction().commit()}否则{super.onBackPressed();}}但我正在研究片段,然后我将如何实现这个方法
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();
}
}
});