【问题标题】:How Save a int variable with SharedPreferences?如何使用 SharedPreferences 保存 int 变量?
【发布时间】:2014-03-11 11:12:11
【问题描述】:

大家好,

我有一个问题,我想用 SharedPreference 简单的 int 值变量保存, 但我有困难。 我有一个标志变量“signum”,它根据所做的选择ImageButton 更改值,我会保存这个标志值。有可能一次Activity 使用两次方法SharedPreferences? 对我来说,Flag-Value 是 String 还是 int 变量并不重要,我需要一个简单的方法。 我认为(但我什至不确定)我在代码行中的错误商店 我在代码行中:salvum2.putInt("semper2", 1 or 2);插入正确的方式 谢谢大家的帮助!

public class MainActivity extends Activity {
private static final String MUTATIO = "semper";
private static final String MUTATIO2 = "semper2";
private ImageButton button;
int signum ;  //this is the variable that I want to save

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    choicheimagebutton();
    operation();
}


private void choicheimagebutton() {
    final SharedPreferences optio =         
            getSharedPreferences(MUTATIO, Context.MODE_PRIVATE);

    final SharedPreferences optio2 = 
            getSharedPreferences(MUTATIO2, Context.MODE_PRIVATE);

    button = (ImageButton) findViewById(R.id.imageButton1);
    button.setImageResource(optio.getInt(MUTATIO, R.drawable.default)); 

    button.setOnLongClickListener(new OnLongClickListener(){

        @Override
        public boolean onLongClick(View v) {




final Dialog dialog = new Dialog(MainActivity.this);
            dialog.setContentView(R.layout.dialog);
            dialog.setTitle("Titolo menù scelta");



            TextView text = (TextView) dialog.findViewById(R.id.text);
            text.setText("Scegli l'icona");
            ImageView image = (ImageView) dialog.findViewById(R.id.image);
            image.setImageResource(R.drawable.ic_launcher);

            dialog.show();

            Button dialogButtonLuce = (Button) dialog.findViewById(R.id.dialogButtonLuceID);

            dialogButtonLuce.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {


                    button.setImageResource(R.drawable.lux);
                    signum = 1 ;
    SharedPreferences.Editor salvum = optio.edit();
    salvum.putInt("semper", R.drawable.lux);

         //Now I would save the flag-int-variable

    salvum.putInt("semper", 1);
    salvum.commit();
                    dialog.dismiss();

                }
            });


  Button dialogButtonGas = (Button) dialog.findViewById(R.id.dialogButtonGasID);

    dialogButtonGas.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {

                button.setImageResource(R.drawable.gas);
                signum = 2;
                SharedPreferences.Editor salvum = optio.edit();
                salvum.putInt("semper", R.drawable.gas);
                salvum.commit();



                salvum.putInt("semper", 2);
                salvum.commit();
 dialog.dismiss();}});

 Button RESET = (Button) dialog.findViewById(R.id.dialogRipristinaID);
 RESET.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
    optio.edit().clear().commit();

    dialog.dismiss();
    }});return true;}});}

private void operation() {
    button.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {

            if (signum==1) {
                Toast.makeText(MainActivity.this, "I have a LUX", Toast.LENGTH_LONG)
                .show();
                }
            if (signum==2) {
                Toast.makeText(MainActivity.this, "I have GAS GAS", Toast.LENGTH_LONG)
                .show();
            }
            else  {
                Toast.makeText(MainActivity.this, "VACUUM", Toast.LENGTH_LONG)
                .show();
            }}});}}

【问题讨论】:

    标签: android variables save int sharedpreferences


    【解决方案1】:
    SharedPreferences prefs = getSharedPreferences(MUTATIO, Context.MODE_PRIVATE);
    Editor editor = prefs.edit();
    editor.putInt("semper", R.drawable.lux );
    editor.putInt("semper2", 1);
    editor.commit();
    

    【讨论】:

    • 感谢 Borad Hardik,我尝试过这种方式,但没有保存到 .谢谢!
    • 是的,我刚做了,我换了salvum2.putInt("semper2", 1 or 2) 但还是不保存(我觉得现在比以前好多了)
    • 好的一件事你不要为所有人创建一个文件。删除这一行。final SharedPreferences optio2 = getSharedPreferences(MUTATIO2, Context.MODE_PRIVATE);
    • 看看我编辑的帖子。像这样使用将所有数据保存在一个文件中。
    • Borad,我不知道为什么,但是,这段代码保存了我的 ImageButton-setteng 但不保存标志值(semper)。当我关闭并打开(重新打开)我的应用程序(在模拟器上)后,ImegeButton 设置被保存,但值 signum no.thanks!
    【解决方案2】:

    如果 semper2 是 STRING,那么这是错误的(所有出现):salvum2.putString("semper2", 2);
    应该是:salvum2.putString("semper2", "2");

    如果 semper2 是 INT,那么这是错误的(所有出现):salvum2.putString("semper2", 2);
    应该是:salvum2.putInt("semper2", 2);

    另请注意,您无需为要保存的每个首选项键创建一个编辑器:一个就足够了。
    提交操作一次,在您所有的储蓄结束时完成。

    【讨论】:

    • Vyger 感谢您的澄清! (你有理由!)但我试图立即更改 (salvum2.putInt("semper2", 2);) ,但不保存到(现在编辑我的问题)。我总是有没有保存变量的问题,感谢您的时间!
    【解决方案3】:

    保存使用这个

    private SharedPreferences prefs;
     prefs = PreferenceManager.getDefaultSharedPreferences(cntx);
     prefs.edit().putInt("userId", userId).commit();
    prefsCommit();
    

    为了得到使用这个

    int userId = prefs.getInt("userId", 0);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      相关资源
      最近更新 更多