Null对象参考Android上的共享首选项

Sim*_*Dev 10 java android

我是新手android开发可能是一个愚蠢的问题,但请帮助我.我在尝试保存int值时收到此错误.

__CODE__

这是我的代码

SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);
String value = "com.example.app.value";
int i = prefs.getInt(value, 0);
Run Code Online (Sandbox Code Playgroud)

写作

prefs.edit().putInt(number, i).apply();
Run Code Online (Sandbox Code Playgroud)

我只是想设置一个SharedPreferences,并希望在第一次读取它并在Activity中写入它.你能告诉我如何解决或提出如何制作它的其他建议吗?谢谢

编辑

public class MainActivity extends Activity {
SharedPreferences sharedpreferences;
public static final String MyPREFERENCES = "myprefs";
public static final  String value = "key";

int i = sharedpreferences.getInt(value, 0);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
}
public void sendMessage(View view) {
    i += 1;    
    SharedPreferences.Editor editor = sharedpreferences.edit();
    editor.putInt(value, i);
    editor.apply();
}
Run Code Online (Sandbox Code Playgroud)

我设法以不同的方式保存pereferences但我无法在MainActivity扩展Activity类中读取它.

日志: __CODE__

Ana*_*ngh 10

这是一个例子 SharedPreferences

要保存name在SharedPreferences中:

SharedPreferences sharedPreferences = PreferenceManager
                .getDefaultSharedPreferences(this);
        Editor editor = sharedPreferences.edit();
        editor.putString(key, name);
        editor.apply();
Run Code Online (Sandbox Code Playgroud)

name从SharedPreferences 获取:

 SharedPreferences sharedPreferences = PreferenceManager
                .getDefaultSharedPreferences(this);
        String name = sharedPreferences.getString(key, "default value");
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请访问:http://developer.android.com/training/basics/data-storage/shared-preferences.html

更新的代码:

public class MainActivity extends Activity {
SharedPreferences sharedpreferences;
public static final String MyPREFERENCES = "myprefs";
public static final  String value = "key";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
    int i = sharedpreferences.getInt(value, 0);
    //use the value of i where needed.
}
public void saveMessage(View view) {
    i += 1;    
    SharedPreferences.Editor editor = sharedpreferences.edit();
    editor.putInt(value, i);
    editor.apply();
}
Run Code Online (Sandbox Code Playgroud)

  • 导致:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.content.Context.getPackageName()”现在出现此错误 (2认同)