2016-12-05 5 views
0

私はGPSインフォメーションを使用して環境モニタリング用の計測器をエミュレートするアプリケーションを作成し、測定データ(https://github.com/sickel/measem)をモデル化しています。このアプリ内で、私は、ユーザーが指定された場所にポイントソースを定義できるようにします。この場所の緯度/経度は共有の設定に保存されます。ポイントは、設定(preferences APIを使用)でlatとlonを入力するか、gpslocationで書き込むことによって定義する必要があります。設定が正常に機能している部分は、gpsから読み込むこともできますが、アプリケーションが一時停止するとすぐに、そのデータセットが環境設定エディタのデータで上書きされます。保存された設定を上書きしました

値を格納するための私のコードは次のとおり

SharedPreferences sp=this.getPreferences(Context.MODE_PRIVATE); 
SharedPreferences.Editor ed=sp.edit(); 
ed.putString("Latitude",lat); 
ed.putString("Longitude",lon); 
ed.apply(); 

I)が(ed.commitをも試みました。適用に加えて、しかし同じ結果で。どのように私はここに格納されているものと、プリファレンスエディタから見えるものを更新できますか?私はこの機能で好みの値

private void readPrefs(){ 
    SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); 
    String ret=sharedPref.getString("Latitude", "1"); 
    Double lat= Double.parseDouble(ret); 
    ret=sharedPref.getString("Longitude", "1"); 
    Double lon= Double.parseDouble(ret); 
    there.setLatitude(lat); 
    there.setLongitude(lon); 
} 

これは(onResumeから呼び出さbeeingてさを設定しています

public void onPause() { 
    super.onPause(); 
    timer.cancel(); 
    timer.purge(); 
    h2.removeCallbacks(run); 
    Button b = (Button)findViewById(R.id.button); 
    b.setText("start"); 
} 

マイonPauseが好みに何もしない、それだけでいくつかの他のハウスキーピングを行います)とonActivityResult()です。私は、SettingsFragmentをsettingsmenuに使用しています。

docs
+0

onPause/Ondestroメソッドを定義するアクティビティコードを投稿 –

+1

実験を行い、別の名前で保存できますか?おそらくこれらの値はあなたのアプリやサードパーティのonPause/onDestroyに書かれています。 – petrumo

+0

@Divyesh、更新を参照してください。 onPauseは環境設定に触れません...私はそれらがapply()またはcommit()で保存されているべきだと思いましたか? – MortenSickel

答えて

1

getPreferences

この活動にプライベート ある嗜好をアクセスするためのSharedPreferencesオブジェクトを取得します。これは単に、このアクティビティの クラス名をプリファレンス名として渡すことによって、基礎となる のgetSharedPreferences(String、int)メソッドを呼び出します。

あなたはさまざまなアクティビティでそれらを取得しようとしているので、2つの異なる共有環境設定を実際に参照していると思われます。したがって、私はあなたが取得して入れているときに同じ方法を使用してSharedPreferencesインスタンスを取得することをお勧めします。 PreferenceManager.getDefaultSharedPreferences(context)は、context.getPreferences("NAME", Context.MODE_PRIVATE)と同様に作業する必要があります。 2つめの場合は、一貫性があることを確認するために名前をリソースとして保存することをお勧めします。

+0

これは意味があります。私はそれを調べます。 – MortenSickel

+0

それはそれをしました - 私はそれを理解したときにとても簡単でした.. – MortenSickel

関連する問題