2014-01-21 2 views
-4

SharedPreferences 코드를 답장으로 보내 주시면 그냥 클릭하는 앱으로주세요. 클릭 수에 따라 점수를 저장하고 싶습니다. 그냥 0에서로드 매번 LoadPrefs를 호출 한 후 저를 0으로 당신은 counter을 설정하는 코드누군가이 코드를 고칠 수 있도록 도와 줄 수 있습니까

import android.R.string; 
import android.os.Bundle; 
import android.preference.PreferenceManager; 
import android.app.Activity; 
import android.content.SharedPreferences; 
import android.content.SharedPreferences.Editor; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    int counter; 
    Button add; 
    TextView display; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     LoadPrefs(); 
     counter = 0; 
     add = (Button) findViewById(R.id.button1); 
     display = (TextView) findViewById(R.id.textView1); 
     add.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       counter++; 
       display.setText("You Have " + counter); 
       SavePrefs("click", display.getText().toString()); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 

    } 


    private void LoadPrefs(){ 
     SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); 
     String name = sp.getString("click", "You Have zero"); 

} 

    private void SavePrefs(String key, boolean value){ 
     SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); 
     Editor edit = sp.edit(); 
     edit.putBoolean(key, value); 
     edit.commit(); 

} 

    private void SavePrefs(String key, String value){ 
     SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); 
     Editor edit = sp.edit(); 
     edit.putString("click", "You Have zero"); 
     edit.commit(); 

} 

} 
+4

: 디스플레이와 동기화에 저장된 값을 (대신 표시 문자열의) 실제 int 값을 저장하고 유지하기 위해

, 나는 그것을 이런 식으로 뭔가를 할 거라고 코드 디버깅 서비스. 당신은 적어도 자신이 시도한 것을 우리에게 말해야합니다. 우리는 시간을 낭비하지 않아야합니다. 당신이 이미 시도해보아야 할 것들을 복사해야합니다. –

답변

1

를 해결하는 데 도움 주시기 바랍니다. 또한 기본 설정을로드 할 때 counter을 설정하지 않습니다. 우리는이 아닌입니다

public class MainActivity extends Activity { 

    int counter; 
    Button add; 
    TextView display; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     add = (Button) findViewById(R.id.button1); 
     add.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       setCounter(counter + 1); 
      } 
     }); 
     display = (TextView) findViewById(R.id.textView1); 
     loadCounter(); // must come after display is assigned 
    } 

    private void loadCounter(){ 
     SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); 
     setCounter(sp.getInt("click", 0)); 
    } 

    private void setCounter(int value) { 
     counter = value; 
     SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); 
     Editor edit = sp.edit(); 
     edit.put("click", counter); 
     edit.apply(); // apply() is better than commit() 
     display.setText("You Have " + 
      (counter > 0 ? String.valueOf(counter) : "zero"); 
    } 
} 
+0

코드에 카운터에 입력 할 수 있습니까? 어디에 넣을 지 이해할 수 없습니다. – user3204046

+0

@ user3204046 - I 귀하의 의견을 이해하지 못합니다. 나는 당신의 디자인을 변경하여 환경 설정에'String' 대신'int'를 저장하도록 제안 할 것입니다. 그런 다음''You Have zero ''대신에'-1'을 기본값으로 사용할 수 있습니다. 'onCreate()'에서'counter'를 0으로 초기화하는 대신에'counter'에 값을로드 할 수도 있습니다. –

+0

당신은 복사하고 자바를 변경 한 다음 고정 된 방법으로 붙여 넣을 수 있습니다. int로 문자열을 삽입하는 방법을 모르겠다. – user3204046

관련 문제