保存由各个按钮组成的列表数据

时间:2019-03-20 19:57:27

标签: android saving-data

我制作了一个由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方法。

谢谢您的时间。

2 个答案:

答案 0 :(得分:0)

您每次都会启动一个新片段,因此它将永远不会保持其状态。您必须在关闭片段时使用侦听器,以便获取数据。

答案 1 :(得分:0)

如果其他人需要类似的菜单,我就会得到答案,您所要做的就是创建一个扩展Application的类,并将其包含在清单中(带有应用程序标记的部分)。从那里开始,您只需要使用getter和setter即可,一切都很好。