有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java保存Int值(共享首选项)

我是java新手。我做了一个计数器,当用户按住按钮时,计数器就会上升。我希望应用程序从它离开的地方的int值开始。我知道共享参考是一种方式,但我不知道如何使用它。我不确定把SharedReference的哪一部分放在哪里。谢谢

public class MainActivity extends AppCompatActivity {
Button button;
int count = 1;
TextView text;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    button = (Button) findViewById(R.id.button);
    text = (TextView) findViewById(R.id.textView);

    button.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View view) {
           count++;
            text.setText(String.valueOf(count));
        return false;
        }
    });

}

}


共 (3) 个答案

  1. # 1 楼答案

    可以这样做,销毁活动时将count保存在SharedReference中,创建活动时从SharedReference中读取值:

    public class MainActivity extends AppCompatActivity {
        Button button;
        int count = 1;
        TextView text;
        SharedPreferences sh;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            button = (Button) findViewById(R.id.button);
            text = (TextView) findViewById(R.id.textView);
    
            sh = getSharedPreferences("sh_name", MODE_PRIVATE);
            count = sh.getInt("count", 1);
    
            button.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View view) {
                    count++;
                    text.setText(String.valueOf(count));
                    return false;
                }
            });
    
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            sh.edit().putInt("count", count).apply();
        }
    }
    
  2. # 2 楼答案

    将以下功能添加到活动中

     public int getValue(String key) {
            SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
            int value = sharedPref.getInt(key, 0);
            return value;
     }
     public void saveValue(String key, int value) {
            SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = sharedPref.edit();
            editor.putInt(key, value);
            editor.commit();
     }
    

    onCreate()方法中添加了一些代码

    final String key = "somekey";
    count  = getValue(key); //get value from sharedPreference
    button = (Button) findViewById(R.id.button);
    text = (TextView) findViewById(R.id.textView);
    text.setText(String.valueOf(count)); // set it first
    button.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View view) {
            count++;
            saveValue(key,count);
            text.setText(String.valueOf(count));
            return false;
        }
    });
    
  3. # 3 楼答案

    试着转身

    int count = 1;
    

    进入

    static int count = 1;
    

    我也有点像Java noobie,所以这可能管用,也可能不管用