2017-08-31 12 views
3

以下のメソッドは動作していましたが、現在は自分の整数をファイルに書き込んでいません。共有設定が動作していない、アンドロイド?

public void writeChpNum(int num) { 
    SharedPreferences prefs = context.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE); 
    prefs.edit().putInt("chapter", num).apply(); 
} 

、これは私がメインクラスから取得する方法である:そう、ここ

writeChpNum(1); 
writeLastLine("0"); 

boolean deleted = file.delete(); 
boolean deleted2 = file2.delete(); 
boolean deleted3 = file3.delete(); 
boolean deleted4 = last.delete(); 
android.os.Process.killProcess(android.os.Process.myPid()); 
System.exit(1); 

が、私はすべてして終了し、再起動します:

SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE); 
chapterNum = prefs.getInt("chapter", 1); 

方法は、このような状況では動作しませんでした私はファイルを削除していますが、チャプターの場合は "1"チャプターを書くだけです。しかし、それは書きませんでした。

これはアプリを終了するためですか?

+1

はいその正しいがどのように機能していませんか?いくつかのエラーログを表示してください。 –

+0

shared prefはアプリのプライベートファイルで、直接外部にはアクセスできない –

+0

ええ、私は別のクラスでこのメソッドを使用しています。 MainActivityクラスで整数を取得しますが、別のクラスに整数を書き込みます。 1つのクラスでのみ使用する必要がありますか? –

答えて

0

コンテキストオブジェクトは、そのようにアクセスすると他のアクティビティでは利用できません。このメソッドを1つのクラスだけに書きたい場合は、メソッドのコンテキストを渡してみてください。メソッドを静的にして、アクティビティオブジェクトを作成する必要はありません。

編集

は、あなたの代わりにapply()

REFのcommit()を必要とするアプリケーションを終了するために、あなたの新しいコードに基づいて:https://developer.android.com/reference/android/content/SharedPreferences.Editor.html#apply()

public static void writeChpNum(Context c, int num) { 
    SharedPreferences prefs = c.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE); 
    prefs.edit().putInt("chapter", num).commit() ; 
} 
+0

私は同じアプリケーション内で次の両方を行っています: 'getContext()。getSharedPreferences(" sample_name "、MODE_PRIVATE);および' SharedPreferences sPrefs = getSharedPreferences( "Sleepin"、MODE_PRIVATE);どちらも動作します。最初はアダプターに入っています。 2番目はそれ自身の活動です。 – Michael

+0

ええ、このメソッドは動作していますが、整数を書き込んでアプリケーションを終了したいときは、書き込みはしませんでした。コードは上記のとおりです。 –

+0

apply()を呼び出している間にアプリケーションを終了していますが、commit()メソッドを使用してください。 applyは非同期に動作するので、バックグラウンドで動作している間にexitを呼び出した。データの書き込み/書き込みが完了した後にcommit()が次の行に移動します。 –

関連する問題