私はユーザーから文字列を受け取り、後でアプリを閉じたときに使用しようとしています。アプリがバックグラウンドのときに動作しますが、閉じるときに文字列を失いますapp..isこれのようにする方法があるか、SharedPreferenceを使用する必要があります。もし私がそれを使用しなければならない場合は、私が試して失敗した理由を説明してください。アプリが閉じていても文字列を保存する
これはの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;
}
から文字列への私のMainActivityで私のコードのアプリのクラッシュであると
「インターフェイスメソッドを呼び出そうと「はjava.lang.String型android.contentを与えます.SharedPreferences.getString(java.lang.String、java.lang.String) 'nullオブジェクトリファレンスで "
この行で
reminder = sharedPreferences.getString("TAG", "");
これは私はあなたがそれをretriveするsharedpreferences
SharedPreferences sharedpreferences = getSharedPreferences("MyPREFERENCES",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("TAG",reminder);
editor.commit();
を使用することができます
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();
}
から借り
getString("TAG", "")
EDITを使用することができますが、[としてクラス全体(複数可)を表示できますmcve]のコードサンプルだけでなく、 'sharedPreferences'は何とか初期化されていないため、nullです。 –
私は私の全体のMainActivityクラスを追加しました。私はちょうど私の質問に関連するスニペットを投稿していました。 –
全部を追加しないで、そのリンクを読んでください。追加したコードのすべてがSharedPreferencesに関連しているわけではありません。 –