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

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,一切都很好。