-5

我的逻辑我试图从我的 Main.java 文件中获取一个 textView,当单击通知时,它应该打印它。我知道我要为此使用 sharedPreferences 。我这样做了。但是,它一直抛出 NullPointerException,但我已经调用了我需要在 NotificationPage.java 类中调用的所有内容,所以我不确定到底是什么问题。请任何帮助表示赞赏。

这是我的 NotificationPage.java 类

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.TextView;


public class NotificationPage extends Activity {
SharedPreferences sp;
SharedPreferences.Editor edit;
TextView arrival;
TextView notifdate;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.notification);
    notifdate=(TextView)findViewById(R.id.textView5);
    arrival=(TextView)findViewById(R.id.textView4);
    sp=getSharedPreferences(arr, MODE_PRIVATE);
    edit=sp.edit();
    sp.getString(arr, null);
    edit=sp.edit();
    edit.putString(arr,sp.getString(arr,null));
    notifdate.setText("Hey!" + sp.getString(arr,null));
    edit.apply();
}

这是从我的其他 java 文件中获取我的共享首选项的代码行

arr=arrival.getText().toString();
sp=getSharedPreferences(arr,MODE_PRIVATE);
4

3 回答 3

1

私有最终字符串 SP_FILE = "my_shared_preferences";

您不知道如何使用共享首选项。请参阅共享偏好指南

您有 2 种方式来使用共享首选项,阅读或写作。

如果您写入您的共享偏好,请先为其命名。

public static final String SP_FILE_NAME = "my_shared_preferences";

SharedPreferences sp = getSharedPreferences(SP_FILE_NAME, MODE_PRIVATE);
sp.edit().putString("key", "value").apply();

一份申请,一份编辑。在两者之间你可以放你想要的东西。

要读取值:

SharedPreferences sp = getSharedPreferences(SP_FILE_NAME, MODE_PRIVATE);
String value = sp.getString("key", "defaultValue");

希望你能看到你的代码有什么问题。

于 2015-09-10T01:57:35.610 回答
1

放一个键值

public static final String SP_NAME = "my_preferences";
SharedPreferences sp = getSharedPreferences(SP_NAME, MODE_PRIVATE);
sp.edit().putString("key", "value").apply();

获取值

SharedPreferences sp = getSharedPreferences(SP_FILE_NAME, MODE_PRIVATE);
String value = sp.getString("key", "defaultValue");
于 2015-09-10T02:41:05.113 回答
1

初始化您的共享首选项对象 ( sp)

sp = getSharedPreferences("Session Data", Context.MODE_PRIVATE);    
于 2015-09-10T00:40:47.933 回答