2017-05-08 59 views
-1

Int的SharedPreferences保存價值我儘量節省使用SharedPreferences在TextView中顯示一個int值,它不能在所有的工作。我做了一個簡單的小例子代碼:在一個TextView

public class MainActivity extends Activity { 

Button search; 
TextView tvRing; 
int redRing; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final SharedPreferences prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE); 

    search = (Button) findViewById(R.id.radar); 
    tvRing = (TextView) findViewById(R.id.ring); 

    int someint = prefs.getInt("someint", 0); 
    tvRing.setText("Objects found : " + String.valueOf(someint)); 

    search.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      addRing(); 
      SharedPreferences.Editor editor = prefs.edit(); 
      editor.putInt("someint", redRing); 
      editor.commit(); 
     } 
    }); 
} 

public void addRing() { 
    redRing++; 
} 
} 

謝謝大家的幫助。

+0

你的代碼看起來很好,什麼做你的意思是「無法工作」? –

+0

我想保存TextView的值,因爲int在用戶單擊按鈕時增加,但如果我退出應用程序並再次返回,則TextView的值將返回默認值0.無法完全保存我的意思是 –

+0

你在哪裏使用someint? –

回答

1

我解釋說,我所做的更改

public class MainActivity extends Activity { 

    Button search; 
    TextView tvRing; 

    //Making sharedpreferences and integers global for ease of use 
    private SharedPreferences prefs; 
    private int redRing, someint; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     search = (Button) findViewById(R.id.radar); 
     tvRing = (TextView) findViewById(R.id.ring); 

     //Someint default value is 0 if not ever saved before 
     prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE); 
     someint = prefs.getInt("someint", 0); 
     tvRing.setText("Objects found : " + String.valueOf(someint)); 

     search.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //Load the lates someint in onclick 
       someint = prefs.getInt("someint", 0); 

       //redring is the dummy integer to increment someint 
       redRing=someint+1; 
       //Save the incremented value 
       SharedPreferences.Editor editor = prefs.edit(); 
       editor.putInt("someint", redRing); 
       editor.commit(); 

       //To show the latest number on the tv 
       lastNumber(); 
      } 
     }); 
    } 


    public void lastNumber() { 
     prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE); 
     someint = prefs.getInt("someint", 0); 
     tvRing.setText("Objects found : " + String.valueOf(someint)); 
    } 
} 
+0

我試了一下,有保存價值,但問題是,如果我退出應用程序和搜索按鈕再次點擊,TextView的開始0再次點擊,但之前,我可以看到的最後一個號碼 –

+0

檢查了這一點。 –

+0

我在lastNumber方法中刪除了多餘的最終sharedpreferences調用。抱歉。 –

1

您應該使用

SharedPreferences.Editor editor = prefs.edit(); 
     editor.putInt("someint", redRing); 
     editor.apply(); 

,你永遠不會使用 「someint」,使用

tvRing.setText(String.valueOf(someint)); 
+0

我試過但始終無法工作 –

+0

您從不使用「someint」 –

+0

但是現在我有一個錯誤,應用程序崩潰 –