2016-08-16 10 views
1

かなり基本的なアプリの開発を始めましたが、何らかの理由でsharedpreferenceを使用できません。アプリを保存するときにクラッシュします。アンドロイドスタジオの共有先の設定

これは私のコードです:

SharedPreferences sp=getSharedPreferences("details1",0); 
    SharedPreferences.Editor editor=sp.edit(); 
    editor.putString("etName",etName.getText().toString()); 
    editor.putString("etLName",etLName.getText().toString()); 
    editor.putString("etCity",etCity.getText().toString()); 
    editor.putString("btnDateOfBirth",btnDateOfBirth.getText().toString()); 
    editor.putString("btnGender",btnGender.getText().toString()); 
    editor.commit(); 

私は必要な変数に宣言しました。何が原因でクラッシュする可能性がありますか?

+1

あなたはstacktraceといくつかのコードを投稿できますか? –

+0

Stacktrace mate、stacktrace。何らかの理由で起こることではありません。それは理由がある。 –

+0

java.lang.NullPointerException:NULLオブジェクト参照で仮想メソッド 'android.text.Editable android.widget.EditText.getText()'を呼び出そうとしました at il.co.appschool.hw_ch7.MainActivity.saveDetails(MainActivity.java :110) il.co.appschool.hw_ch7.MainActivity $ HandleAlertDialogListener.onClick(MainActivity.java:101)edit:nullでないときにも発生します。btw – GuyTsir

答えて

0

を要求するコンテキストを指定する必要が

Context context = getActivity(); SharedPreferences sp=context.getSharedPreferences("details1",Context.MODE_PRIVATE);

ようgetSharedPreferenceにコンテキストを追加しようとしたことがあり:

SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); 

また、スタックトレースは、たとえば、getTextメソッドから来ていますか?変数は宣言されていますが、それだけでは不十分です。彼らは既存のTextViewを指さなければなりません、またはあなたはnullポインタの例外を取得します。

追加トリック:putXメソッドがエディタを返すときにチェーンすることができます。

editor.putString("etName",etName.getText().toString()) 
    .putString("etLName",etLName.getText().toString()) 
    .putString("etCity",etCity.getText().toString()) 
    .putString("btnDateOfBirth",btnDateOfBirth.getText().toString()) 
    .putString("btnGender",btnGender.getText().toString()) 
    .commit(); 

EDIT:stacktraceからetNameがnullと思われます。したがって、既存のTextViewを指していることを確認する必要があります。通常:

etName = findViewById(R.id.et_text); 

あなたのTextView(またはのEditTextが)あなたのXMLレイアウトのid et_textを持っている場合。

+0

エラーが発生した行は、最初のput文字列行。だからそこにいるかもしれない? – GuyTsir

+0

私はあなたがコメントしたstacktraceを見ましたが、私が言ったように、問題はTextViewsから来ており、共有された環境設定とは関係ありません。変数が既存のTextViewを指していなければなりません。あるいは、ヌルポインター例外が発生します。 –

+0

クイック返信btwありがとう。私はかなり前もって申し訳ありません開発するアンドロイドに新しいです。 spを使用しようとしたとき、私のEditText変数はnullではありませんでした。巨大な編集:私は右になるかもしれないと思う!もう一度私に確認してください! – GuyTsir

0

あなたはあなたが、私は一般的に自分のアプリケーションのsharedPreferencesを取得するには、この方法を使用SharedPreference

関連する問題