保存由各个按钮组成的列表数据
Saving list data composed of individual buttons
我制作了一个由 TextView 和 Button 组成的列表,当一个人点击一个按钮时,一个片段打开,并且有一个他可以 select 的值列表。问题是当我按下另一个按钮为另一个字段再次 select 一个值时,以前的值消失了。所以问题是如何保存片段值,并一直保存到应用程序关闭?
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 {}
}
我在OnResume
方法中使用了RetriveDataFromFragment
方法。
谢谢您的宝贵时间。
你每次都在启动一个新的片段,所以它永远不会保持它的状态。您必须在关闭片段时使用监听器才能取回数据。
如果其他人需要类似的菜单,我会得到答案,您所要做的就是创建一个扩展 Application
的 class,并将其包含到您的清单中(带有应用程序标签的部分) .从那里你只需使用 getters 和 setters,一切都很好。
我制作了一个由 TextView 和 Button 组成的列表,当一个人点击一个按钮时,一个片段打开,并且有一个他可以 select 的值列表。问题是当我按下另一个按钮为另一个字段再次 select 一个值时,以前的值消失了。所以问题是如何保存片段值,并一直保存到应用程序关闭?
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 {}
}
我在OnResume
方法中使用了RetriveDataFromFragment
方法。
谢谢您的宝贵时间。
你每次都在启动一个新的片段,所以它永远不会保持它的状态。您必须在关闭片段时使用监听器才能取回数据。
如果其他人需要类似的菜单,我会得到答案,您所要做的就是创建一个扩展 Application
的 class,并将其包含到您的清单中(带有应用程序标签的部分) .从那里你只需使用 getters 和 setters,一切都很好。