Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在应用程序关闭后存储整数值并检索它_Java_Android_Integer_Sharedpreferences - Fatal编程技术网

Java 在应用程序关闭后存储整数值并检索它

Java 在应用程序关闭后存储整数值并检索它,java,android,integer,sharedpreferences,Java,Android,Integer,Sharedpreferences,我不知道如何解决这个问题,请帮忙 我正在创建一个计数器应用程序,每次用户按下按钮时显示数字。它从0开始,最大值为9999。我的问题是,在用户关闭应用程序后,它会再次从0开始,但我想要的是在用户再次打开应用程序时显示用户按下的最后一个数字,而不是0。我尝试了许多共享偏好代码,但都不起作用。这是我的密码: import android.content.Context; import android.content.SharedPreferences; import android.media.Med

我不知道如何解决这个问题,请帮忙

我正在创建一个计数器应用程序,每次用户按下按钮时显示数字。它从0开始,最大值为9999。我的问题是,在用户关闭应用程序后,它会再次从0开始,但我想要的是在用户再次打开应用程序时显示用户按下的最后一个数字,而不是0。我尝试了许多共享偏好代码,但都不起作用。这是我的密码:

import android.content.Context;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private int x;
    Context context = this;
    MediaPlayer mp;

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


       final TextView number=(TextView) findViewById(R.id.numbers);
        ImageButton btn_count=(ImageButton) findViewById(R.id.btn_countn);
        ImageButton btn_reset=(ImageButton) findViewById(R.id.btn_resetn);
        mp = MediaPlayer.create(context, R.raw.button_press);

        number.setText(String.format("%04d", x)+"");

        btn_count.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    if (mp.isPlaying()) {
                        mp.stop();
                        mp.release();
                        mp = MediaPlayer.create(context, R.raw.button_press);
                    } mp.start();
                } catch(Exception e) { e.printStackTrace(); }
                x = x +1;
                number.setText(String.format("%04d", x)+"");
            }
        });

        btn_reset.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    if (mp.isPlaying()) {
                        mp.stop();
                        mp.release();
                        mp = MediaPlayer.create(context, R.raw.button_press);
                    } mp.start();
                } catch(Exception e) { e.printStackTrace(); }
                x=0;
                number.setText(String.format("%04d", x)+"");
            }
        });
    }
}
为此,您需要使用:

怎么用? 定义应用程序何时关闭,然后调用一个方法,在该方法中可以写入计数器的实际值

例子 当应用程序再次打开时,你需要调用另一个方法并将其读回

例子:
因此,请验证您存储的内容并检查您获得的首选项是否为0,这意味着之前没有存储任何内容,因此您可以从0开始游戏…

使用
SharedReferences
执行以下操作:

public class MainActivity extends AppCompatActivity {

    private int x;
    SharedPreferences prefs;

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

        prefs = PreferenceManager.getDefaultSharedPreferences(this);
        x = prefs.getInt("count", 0);

        final TextView number=(TextView) findViewById(R.id.numbers);
        ImageButton btn_count=(ImageButton) findViewById(R.id.btn_countn);
        ImageButton btn_reset=(ImageButton) findViewById(R.id.btn_resetn);

        number.setText(String.valueOf(x));

        btn_count.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                x++;
                prefs.edit().putInt("count", x).apply();
                number.setText(String.valueOf(x));
            }
        });

        btn_reset.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                x=0;
                prefs.edit().putInt("count", x).apply();
                number.setText(String.valueOf(x));
            }
        });
    }
}

同时添加您的共享首选项代码。感谢您:)您保存了我的day mate:)
SharedPreferences buttonCounterValue = getPreferences(Activity.MODE_PRIVATE);
int  storedCounter = buttonCounterValue.getInt("myCounter", 0);
public class MainActivity extends AppCompatActivity {

    private int x;
    SharedPreferences prefs;

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

        prefs = PreferenceManager.getDefaultSharedPreferences(this);
        x = prefs.getInt("count", 0);

        final TextView number=(TextView) findViewById(R.id.numbers);
        ImageButton btn_count=(ImageButton) findViewById(R.id.btn_countn);
        ImageButton btn_reset=(ImageButton) findViewById(R.id.btn_resetn);

        number.setText(String.valueOf(x));

        btn_count.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                x++;
                prefs.edit().putInt("count", x).apply();
                number.setText(String.valueOf(x));
            }
        });

        btn_reset.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                x=0;
                prefs.edit().putInt("count", x).apply();
                number.setText(String.valueOf(x));
            }
        });
    }
}