2017-05-08 56 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

但是现在我有一个错误,应用程序崩溃 –