【发布时间】:2017-03-22 17:33:14
【问题描述】:
我正在尝试从用户那里获取字符串,然后在应用程序关闭时使用它。现在它只在应用程序处于后台时工作,但是当我关闭应用程序时我丢失了字符串。有没有办法这样做,否则我必须使用 SharedPreference,如果我必须使用它,请解释如何因为我尝试过但失败了..非常感谢。
这是我在 MainActivity 中从 EditText 到字符串的代码
public class MainActivity extends AppCompatActivity {
private SharedPreferences sharedPreferences;
private static String reminder;
private EditText et;
private Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initialize variables
sharedPreferences = getSharedPreferences("MyPREFERENCES",Context.MODE_PRIVATE);
final SharedPreferences.Editor editor = sharedPreferences.edit();
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
et = (EditText) findViewById(R.id.Name);
reminder = et.getText().toString();
if(reminder == null){
reminder = "TWEAK!";
}
editor.putString("TAG",reminder);
editor.commit();
// do stuff
}
// get the user's string
public String getRem() {
reminder = sharedPreferences.getString("TAG", "");
return reminder;
}
应用程序崩溃并给出
“尝试在空对象引用上调用接口方法'java.lang.String android.content.SharedPreferences.getString(java.lang.String, java.lang.String)'”
在这一行
reminder = sharedPreferences.getString("TAG", "");
这是我调用方法的类
public class Notifications extends BroadcastReceiver {
private String rem;
// set notification
@Override
public void onReceive(Context context, Intent intent) {
// object to access MainActivity methods
MainActivity main = new MainActivity();
rem = main.getRem();
}
【问题讨论】:
-
您能否将整个类显示为minimal reproducible example,而不仅仅是这些小代码示例?
sharedPreferences为空,因为它没有以某种方式初始化。 -
我添加了我的整个 MainActivity 类..我只是在发布与我的问题相关的 sn-ps
-
不要添加整个内容,请阅读该链接。并非您添加的所有代码都与 SharedPreferences 相关。
标签: android string nullpointerexception sharedpreferences