1

初めてのポスターはこちらですので、投稿ミスはご容赦ください。また、Androidの初心者であり、共有設定の問題を理解しようとして問題が発生しています。定数を次のように宣言します

    private static SharedPreferences mSharedPreferences;
    static final String TWEET = null;

    static final String MEAL_ID = null;

そして私の共有の好みは次のとおりです

    mSharedPreferences = getApplicationContext().getSharedPreferences(
            "MyPref", 0);

私の簡単なテストコードは次のとおりです。

    String msgTemp = "testing";
long iDTest = 234;
Editor e = mSharedPreferences.edit();
e.putLong(MEAL_ID, iDTest);
e.putString(TWEET, msgTemp);
e.commit();
String tempMsg = mSharedPreferences.getString(TWEET, "");
long tempId = mSharedPreferences.getLong(MEAL_ID, 0);
    Toast.makeText(getApplicationContext(),
    "Msg: " + tempMsg + " " + "ID: " + tempId, Toast.LENGTH_LONG).show();

次のエラーが返されます。

    03-25 15:47:41.386: E/AndroidRuntime(28321): java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long03-25 15:47:41.386: E/AndroidRuntime(28321):    at android.app.SharedPreferencesImpl.getLong(SharedPreferencesImpl.java:228)

ただし、次のようにコードの2つの「put」行を切り替えると、次のようになります。

    String msgTemp = "testing";
long iDTest = 234;
Editor e = mSharedPreferences.edit();
e.putString(TWEET, msgTemp);
e.putLong(MEAL_ID, iDTest);
e.commit();
String tempMsg = mSharedPreferences.getString(TWEET, "");
long tempId = mSharedPreferences.getLong(MEAL_ID, 0);
    Toast.makeText(getApplicationContext(),
    "Msg: " + tempMsg + " " + "ID: " + tempId, Toast.LENGTH_LONG).show();

次のエラーが発生します。

    03-25 15:50:16.551: E/AndroidRuntime(28838): java.lang.ClassCastException:  java.lang.Long cannot be cast to java.lang.String 03-25 15:50:16.551: E/AndroidRuntime(28838):  at android.app.SharedPreferencesImpl.getString(SharedPreferencesImpl.java:205)

したがって、値が間違った順序で設定に入力されているように見えますが、理由はわかりません。次のような新しい値を入力する前に、値をクリアしようとしました。

    String msgTemp = "testing";
long iDTest = 234;
Editor e = mSharedPreferences.edit();
e.remove(MEAL_ID);
e.remove(TWEET);
e.putLong(MEAL_ID, iDTest);
e.putString(TWEET, msgTemp);
e.commit();
String tempMsg = mSharedPreferences.getString(TWEET, "");
long tempId = mSharedPreferences.getLong(MEAL_ID, 0);
    Toast.makeText(getApplicationContext(),
    "Msg: " + tempMsg + " " + "ID: " + tempId, Toast.LENGTH_LONG).show();

しかし、それも何もしませんでした。誰かが私のためにこれにいくつかの光を当てることができますか?

4

1 に答える 1

5

定数値を指定します。

MEAL_ID = "meal_id"

于 2013-03-25T20:04:55.397 に答える