2016-12-05 2 views
0

GPS 정보를 사용하여 환경 모니터링을위한 도구를 에뮬레이트하는 응용 프로그램을 작성하여 측정 데이터 (https://github.com/sickel/measem)를 모델링했습니다. 이 응용 프로그램 내에서 사용자가 주어진 위치에서 지점 소스를 정의 할 수 있기를 바랍니다. 이 위치의 위도/경도는 공유 환경 설정에 저장됩니다. 점은 환경 설정 API를 사용하여 설정에서 lat 및 lon을 입력하거나 gpslocation에서 연결하여 정의해야합니다. 설정이있는 부분이 잘 작동하고 gps에서 해당 위치를 읽을 수도 있지만 앱이 일시 중지되는 즉시 환경 설정 편집기의 데이터로 해당 데이터 세트를 덮어 씁니다.저장 한 환경 설정을 덮어 씁니다.

값을 저장하기위한 내 코드는 : I

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

(); 적용에 더하여, 그러나 동일한 결과와 함께. 환경 설정 편집기에서 본 내용을 여기에 저장하는 방법으로 어떻게 업데이트 할 수 있습니까? 나는이 기능의 환경 설정에서 값을 설정하고하는 것은

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

실험을 수행하고 다른 이름으로 저장할 수 있습니까? 어쩌면이 값들은 앱이나 제 3 자의 onPause/onDestroy에 쓰여질 것입니다. – petrumo

+0

@Divyesh, 업데이트를 참조하십시오. onPause는 환경 설정에 영향을주지 않습니다 ... apply() 또는 commit()으로 저장해야한다고 생각 했습니까? – MortenSickel

답변

1

getPreferences :

가 된 SharedPreferences이 활동에 비공개 설정에 액세스하기위한 객체를 검색합니다. 이 액티비티의 클래스 이름을 기본 설정 이름으로 전달하여 기본 getSharedPreferences (String, int) 메서드를 호출하기 만하면됩니다.

서로 다른 활동을하기 때문에 실제로 두 개의 다른 공유 환경 설정 즉 두 개의 다른 파일을 참조하고 있다고 생각됩니다. 따라서 같은 방법을 사용하여 가져올 때 및 넣을 때 SharedPreferences 인스턴스를 가져 오는 것이 좋습니다. PreferenceManager.getDefaultSharedPreferences(context)context.getPreferences("NAME", Context.MODE_PRIVATE)과 같이 작업해야합니다. 두 번째로 진행한다면 이름을 리소스로 유지하여 일관성을 유지할 것을 제안합니다.

+0

그건 의미가 있습니다. 나는 그것을 들여다 볼 것이다. – MortenSickel

+0

그게 그랬어. 그냥 이해했을 때 너무 쉬웠다. – MortenSickel