3

SharedPreferencesを学習しようとしていますが、エラーが発生します。

私のレイアウトには、メソッドに反応するボタンが1つありますdoThis

これは私のJavaです:

package com.example.sharedprefs;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {
    int i = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    public void doThis (View view){
        i++;
        SharedPreferences sharedPref = getSharedPreferences("FileName",MODE_PRIVATE);
        SharedPreferences.Editor prefEditor = sharedPref.edit();
        prefEditor.putInt("userChoice",i);
        prefEditor.commit();
        int number = sharedPref.getInt("userChoice", 0);
        Toast.makeText(getApplicationContext(), number, Toast.LENGTH_LONG).show();
    }

}

logcatで特定できるのは10-15 19:28:17.707: E/AndroidRuntime(16657): Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x1

4

3 に答える 3

8

あなたのトーストは正しくありません。文字列が得られることを期待してトーストに数値を渡しますが、代わりに文字列リソース値を検索する必要があると考えています。試す:

Toast.makeText(getContext(), number + "" , Toast.LENGTH_LONG).show();

編集、それ以外は、コードは問題ありません。

于 2012-10-15T23:34:07.727 に答える
0

Toastメッセージに整数型を作成することはできません。

Toast.makeTextメソッドのメッセージパラメータに文字列型のみを設定できます。

解決策としては、これらを試すことができます

Toast.makeText(getApplicationContext(), Integer.toString(number), Toast.LENGTH_LONG).show();

Toast.makeText(getApplicationContext(), ""+number, Toast.LENGTH_LONG).show();

はい、共有設定の使用法は完全に問題ありません。

于 2012-10-15T23:52:59.680 に答える
0

ここでの問題は、トースト文字列として整数値を使用していることです。次のことを行う必要があります。

String.valueOf(number);

また

Integer.toString(number);

sharedpreferencesの部分は問題ありません。ただし、SharedPreferencesの詳細については、この投稿にアクセスしてください。 AndroidSharedPreferencesの例

于 2017-11-08T08:53:36.653 に答える