我制作了一个由TextViews和Buttons组成的列表,使当人们单击按钮时,会打开一个片段,并且存在可供选择的值列表。问题是当我按另一个按钮再次为另一个字段选择一个值时,以前的值消失了。因此,问题将是如何保存fragment值,并保持其保存状态直到应用程序关闭?
priceButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
PriceFragment priceFragment = new PriceFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer, priceFragment).commit();
setToHideElements();
}
});
yearButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
YearFragment yearFragment = new YearFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer, yearFragment).commit();
setToHideElements();
}
});
这是年份片段
yearEndListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(getActivity().getBaseContext(), MainMenuActivity.class);
String yearTo = yearList[i].toString();
int yearTint = Integer.valueOf(yearTo);
if (combinedYear != null) {
combinedYear = combinedYear + " " + yearTo;
intent.putExtra("Years", combinedYear);
getActivity().startActivity(intent);
} else {
combinedYear = null;
combinedYear = yearTo;
}
}
});
这是检索数据的方法
private void retriveDataFromFragment(){
Intent intent = getIntent();
String fragmentDataPrice = intent.getStringExtra("PriceData");
String fragmentDataYear = intent.getStringExtra("Years");
if(fragmentDataPrice != null){
priceButton.setText(fragmentDataPrice);
} else {}
if (fragmentDataYear != null){
yearButton.setText(fragmentDataYear);
} else {}
}
我在RetriveDataFromFragment
方法中使用OnResume
方法。
谢谢您的时间。
答案 0 :(得分:0)
您每次都会启动一个新片段,因此它将永远不会保持其状态。您必须在关闭片段时使用侦听器,以便获取数据。
答案 1 :(得分:0)
如果其他人需要类似的菜单,我就会得到答案,您所要做的就是创建一个扩展Application
的类,并将其包含在清单中(带有应用程序标记的部分)。从那里开始,您只需要使用getter和setter即可,一切都很好。