带有SparseArray< String>的Android捆绑包 [英] Android Bundle with SparseArray<String>

查看:40
本文介绍了带有SparseArray< String>的Android捆绑包的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要将两个SparseArray存储在一个捆绑包中。

I need to store in a Bundle two 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());   
}

Eclipse说:

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

OnRestoreInstanceState:

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>

我的问题是什么? :(

What's my problem? :(

推荐答案

在您的情况下(其中SparseArray为字符串),我认为您不能使用方法(putSparseParcelableArray)。

In your case (where the SparseArray is of String), i think you cannot use the method (putSparseParcelableArray).

仅当稀疏数组的对象类型实现了Parcelable接口,而String类没有实现此方法时,才可以使用此方法。

This method can only be used when the Object type of the Sparse Array implements Parcelable interface, and String class doesn't implement this.

引用: http://developer.android.com/ reference / java / lang / String.html

直到我们没有任何具体解决方案时,您可以这样做,

Till the time we don't get any concrete solution you can do this, While saving the SparseArray, put this data in the list and save that list the outState bundle.

然后在onRestoreInstanceState中,检索列表并将其再次转换为SparseArray。

And in onRestoreInstanceState, retrieve the list and convert it to the SparseArray again.

这篇关于带有SparseArray&lt; String&gt;的Android捆绑包的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆