0

からオブジェクトの配列を復元しようとしていsavedInstanceStateます。ここでそれぞれを個別に追加しましBundleた:(リズムはオブジェクトの配列です)

@Override
public void onSaveInstanceState(Bundle outState){
    outState.putInt("numParts",rhythm.length);
    for(int index = 0;index<rhythm.length;++index){
        outState.putSerializable(""+index,rhythm[index].beat);
    }
    super.onSaveInstanceState(outState);
}

メソッドが呼び出されると、ここでインスタンス状態のオブジェクトを配列onRestoreInstanceState()に割り当てようとします: (null ではありません)rhythm

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState){
    rhythm = new Part[savedInstanceState.getInt("numParts")];
    for(int index = 0; index<rhythm.length;++index){
         Object middleMan =savedInstanceState.getSerializable(""+index);
         if(middleMan==null){
             System.out.println("It's null...");
         }
    rhythm[index]=(Part) middleMan;
    }
}

毎回ClassCastExceptiona に解析すると a がスローされます。Part部分実装しSerializableます。解析できないのはなぜですか? カスタムのシリアル化を行う必要がありますか? 助けてください!

4

2 に答える 2

1

Part はあなたが作成した型ではないでしょうか。そのため、Part を配列として扱う代わりに

rhythm = new Part[savedInstanceState.getInt("numParts")];

次のように、新しい Part オブジェクトをインスタンス化します。

rhythm = new Part(savedInstanceState.getInt("numParts"));

その他の仮定:

  1. リズムはメンバー変数です
  2. Part のコンストラクターは単一の整数を取ります
于 2012-07-09T23:32:53.473 に答える
0

さて、私はそれをアレイ全体として実行し、それは機能しました...理由はよくわかりませんが、機能しました。配列全体を渡すというアイデアをくれてありがとう。@エラー454

于 2012-07-10T00:00:36.400 に答える