【问题标题】:Android studio saving data that extends ButtonAndroid Studio 保存扩展 Button 的数据
【发布时间】:2015-05-25 15:13:42
【问题描述】:

我正在 android studio 上开发扫雷游戏。如果用户在玩游戏时关闭游戏,我要做的是保存游戏的状态。我有在扩展 Button 的对象上使用 parcelable 时遇到问题,如下所示:

private final Tile[][] mData = new Tile[8][8]; //8x8 grid   
public class Tile extends Button implements Parcelable
{
    private boolean isMine;
    private boolean isFlag;
    private boolean isCovered;
    private int noSurroundingMines;

我知道我需要使用onSaveInstanceStateParcelable

public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    savedInstanceState.putParcelable("test", (Parcelable) mData); <--Error
}        

*Error:Inconvertible types;Cannot Cast GameActivity.Tiles to android.Parcelable

我也知道您无法保存二维数组,并且我知道解决方法。我真的很想知道如何保存扩展按钮的对象

【问题讨论】:

    标签: android arrays parcelable state-saving


    【解决方案1】:

    您为什么要将mData 转换为Parcelable

    savedInstanceState.putParcelable("test", (Parcelable) mData);
    

    Tile[][] mData 是一个二维数组,这不是Parcelable 本身,但它的内容是myTile=mData[0][1]

    savedInstanceState.putParcelable("test", myTile);
    

    请阅读有关 OOP 概念的更多信息。

    【讨论】:

      【解决方案2】:

      当您尝试保存 mData 时,您实际上并没有使用 Parcelable 接口。

      您可能想要做的是将二维数组放入实现 Parcelable 的包装器中。

      public class Minefield implements Parcelable
      {
          private Tile[][] mData;
      
          public Minefield() {
              mData = new Tile[8][8]
          }
      }
      

      然后在你的主要活动中,如果没有保存状态,则创建一个 Minefield 实例:

      private final Minefield minefield;
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onSaveInstanceState(savedInstanceState);
      
          if (savedInstanceState != null) {
              //do stuff with savedInstanceState
          } else {
              minefield = new Minefield();
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2023-04-07
        • 2021-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多