3

我正在尝试学习 SharedPreferences,但出现错误。

我的布局有一个按钮可以对方法做出反应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,希望它会给出一个字符串,而不是认为它应该查找一个字符串资源值。尝试:

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

编辑,除此之外,您的代码很好。

于 2012-10-15T23:34:07.727 回答
0

您不能为 Toast 消息创建整数类型。

你只能把 String 类型的 message 参数放到 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

这里的问题是您使用整数值作为 Toast 字符串。您必须执行以下操作。

String.valueOf(number);

或者

Integer.toString(number);

您的 sharedpreferences 部分没问题。但有关 SharedPreferences 的更多信息,您可以访问这篇文章。 Android SharedPreferences 示例

于 2017-11-08T08:53:36.653 回答