2

Bundle 2 SparseArray に格納する必要があります。

だからここにあります:

    protected void onSaveInstanceState(Bundle state) {
        super.onSaveInstanceState(state);

        state.putSparseParcelableArray("guybrushInsulti", (SparseArray<String>) gameEngine.getDialogs().getInsultKnow());
        state.putSparseParcelableArray("guybrushControInsulti",(SparseArray<String>) gameEngine.getDialogs().getControInsultKnow());
        state.putSerializable("level", gameEngine.getWorld().getLevel());   
}

エクリプス 言います:

The method putSparseParcelableArray(String, SparseArray<? extends Parcelable>) in the type Bundle is not applicable for the arguments (String, SparseArray<String>)

OnRestoreInstanceState:

 @Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);

    SparseArray<String> mInsultiKnow = savedInstanceState.getSparseParcelableArray("guybrushInsulti");
    SparseArray<String> mControInsultiKnow = savedInstanceState.getSparseParcelableArray("guybrushControInsulti");

        //Ripristino insulti
        gameEngine.getDialogs().loadControInsult(mLevel , true);
        gameEngine.getDialogs().loadInsult(mLevel, true, mInsultiKnow, mControInsultiKnow);
}

エラー:

Bound mismatch: The generic method getSparseParcelableArray(String) of type Bundle is not applicable for the arguments (String). The inferred type String is not a valid substitute for the bounded parameter <T extends Parcelable>

私の問題は何ですか?:(

4

1 に答える 1

2

あなたの場合(SparseArrayがStringの場合)、メソッド(putSparseParcelableArray)を使用できないと思います。

このメソッドは、Sparse Array の Object 型が Parcelable インターフェイスを実装し、String クラスがこれを実装していない場合にのみ使用できます。

参照: http://developer.android.com/reference/java/lang/String.html

具体的な解決策が得られないときまで、これを行うことができます。SparseArray を保存するときに、このデータをリストに入れ、そのリストを outState バンドルに保存します。

そして onRestoreInstanceState で、リストを取得し、再度 SparseArray に変換します。

于 2013-04-28T08:12:35.420 に答える