2014-01-21 80 views
-4

請幫助解決這個問題我不會加載SharedPreferences 如果你能請張貼在它的代碼的回覆,請 它只是一個點擊應用程序,我希望它來保存從點擊的成績它只是從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

我們不是一個代碼調試服務。你至少應該告訴我們你自己試過了什麼,所以我們不浪費我們的時間複製你已經嘗試過的東西 –

回答

1

固定爲0調用LoadPrefs後。另外,您在加載首選項時未設置counter

爲了節省實際int值(而不是顯示字符串),並保持顯示和同步保存的價值,我會做這樣的事情:

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不明白你的評論。我建議改變你的設計,在首選項中存儲一個'int'而不是'String'。然後你可以使用'-1'(而不是''你有零'')作爲默認值。您也可以將值加載到'counter'中,而不是在'onCreate()'中將'counter'初始化爲0。 –

+0

你能否請複製並更改java,然後以固定的方式粘貼,我不知道如何甚至把字符串作爲int – user3204046

相關問題