Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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 我有5个图像,我想把它们设置为单个ImageButton的src。每次点击它都应该改变,如果应用程序关闭,它必须保持其价值_Java_Android_Android Studio - Fatal编程技术网

Java 我有5个图像,我想把它们设置为单个ImageButton的src。每次点击它都应该改变,如果应用程序关闭,它必须保持其价值

Java 我有5个图像,我想把它们设置为单个ImageButton的src。每次点击它都应该改变,如果应用程序关闭,它必须保持其价值,java,android,android-studio,Java,Android,Android Studio,它就像一个风扇调节器,每次图像(src应该是ImageButton的)应该在点击时改变,并且在应用程序关闭时保留其值。 最好的方法是什么? 我只想使用一个java文件 全局VAR计数=0 在onCreate中 aButton4 = (ImageButton) findViewById(R.id.imageButton4); SharedPreferences sharedPreferences = getSharedPreferences("NAME", Context.MODE_PRIVATE

它就像一个风扇调节器,每次图像(src应该是ImageButton的)应该在点击时改变,并且在应用程序关闭时保留其值。 最好的方法是什么? 我只想使用一个java文件

全局VAR计数=0

在onCreate中

aButton4 = (ImageButton) findViewById(R.id.imageButton4);
SharedPreferences sharedPreferences = getSharedPreferences("NAME", Context.MODE_PRIVATE);
int f = sharedPreferences.getInt("count_key", count);
if (count == 0) {
        aButton4.setImageResource(R.drawable.reg0);
    }
    if (count == 1) {
        aButton4.setImageResource(R.drawable.reg1);
    }
    if (count == 2) {
        aButton4.setImageResource(R.drawable.reg2);
    }
    if (count == 3) {
        aButton4.setImageResource(R.drawable.reg3);
    }
    if (count == 4) {
        aButton4.setImageResource(R.drawable.reg4);
    }
**然后**

    aButton4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            count++;
            SharedPreferences sharedPreferences = getSharedPreferences("NAME", Context.MODE_PRIVATE);
            int f = sharedPreferences.getInt("clicked4", count);
            SharedPreferences.Editor editor = sharedPreferences.edit();
            editor = sharedPreferences.edit();
            if (count<5) {
                if (count == 1) {
                    toggleSound.start();
                    aButton4.setImageResource(R.drawable.reg1);
                    editor.putInt("clicked4", count);
                    editor.commit();
                }
                if (count == 2) {
                    toggleSound.start();
                    aButton4.setImageResource(R.drawable.reg2);
                    editor.putInt("clicked4", count);
                    editor.commit();
                }
                if (count == 3) {
                    toggleSound.start();
                    aButton4.setImageResource(R.drawable.reg3);
                    editor.putInt("clicked4", count);
                    editor.commit();
                }
                if (count == 4) {
                    toggleSound.start();
                    aButton4.setImageResource(R.drawable.reg4);
                    editor.putInt("clicked4", count);
                    editor.commit();
                }
            }
            else {
                count = 0;
                toggleSound.start();
                aButton4.setImageResource(R.drawable.reg0);
                editor.putInt("clicked4", count);
                editor.commit();
            }
        }
    });

}
aButton4.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
计数++;
SharedReferences SharedReferences=GetSharedReferences(“名称”,Context.MODE\u PRIVATE);
int f=SharedReferences.getInt(“clicked4”,计数);
SharedReferences.Editor=SharedReferences.edit();
editor=SharedReferences.edit();

如果(计数设置onClickListener。让onClickListener设置一个新的源。将源的值写入共享首选项以便保存。在您的活动的onCreate中,阅读共享首选项以了解最初将其设置为什么。

这是一个逻辑类问题,如果您只是复制和粘贴,下面的答案将不起作用,您必须编写代码以执行下面的代码

int count_Global_Declar =0;

SharedPreferences.Editor soteCount= getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();

button.setOnclickList(.... View view){
bla bla...


if(count <=5){
count = count+1;
soteCount= .putInt("count_key", count_Global_Declar ).commit();
storeCount.
    ifcount_Global_Declar  == 1){
    //First image source
    } 
    if(count_Global_Declar  ==2){
    //Secound image source
    }

    if(count_Global_Declar  ==3){
    // Third image source
    }

    .... So on .,
}else{
count_Global_Declar = 0;
soteCount= .putInt("count_key", count_Global_Declar );
}
)};

onStart(){
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
count_Global_Declar =  prefs.getInt("count_key", 0);
}
int count\u Global\u Declar=0;
SharedReferences.Editor soteCount=GetSharedReferences(我的首选名称,模式为私有)。编辑();
button.setOnclickList(..视图){
布拉布拉。。。
如果(count我会这样做:

private int Clicks;

公共类…扩展…实现视图。OnClickListener

然后在你的OnCreate中

附件4.setOnClickListener(此);

在onClickListener方法内部

@Override
    public void onClick(View v) {
        Clicks++;
        switch (Clicks)
        {
            case 1:
                aButton4.setImageResource(R.drawable.reg0);
                toggleSound.start();
                sharedPreferences = getSharedPreferences("NAME", Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = sharedPreferences.edit();
                editor.putInt("clicked4", count);
                editor.commit();
            case 2:
                aButton4.setImageResource(R.drawable.reg1);
                toggleSound.start();
                sharedPreferences = getSharedPreferences("NAME", Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = sharedPreferences.edit();
                editor.putInt("clicked4", count);
                editor.commit();
            case 3:
                ....
            case 4:
                ....
                Clicks =0;
       }
编辑:在onCreate代码中,执行下一步操作

aButton4 = (ImageButton) findViewById(R.id.imageButton4);
SharedPreferences sharedPreferences = getSharedPreferences("NAME", Context.MODE_PRIVATE);
int f = sharedPreferences.getInt("count_key", count);
if (f== 0) {
        aButton4.setImageResource(R.drawable.reg0);
    }
    if (f== 1) {
        aButton4.setImageResource(R.drawable.reg1);
    }
    if (f== 2) {
        aButton4.setImageResource(R.drawable.reg2);
    }
    if (f== 3) {
        aButton4.setImageResource(R.drawable.reg3);
    }
    if (f== 4) {
        aButton4.setImageResource(R.drawable.reg4);
    }

将图像按钮的最后一个值存储在共享首选项扫描您是否需要详细说明一下?我是Android的新手,然后我会在谷歌上搜索其中一些术语并学习。尝试单击Listener、SharedReferences和Activity lifecycle(onCreate是其中的一部分)。我写了整个代码,现在只出现了一个问题。当我重新启动应用程序时,它的映像将重置为默认的src,即reg0。请签出更新的程序。如果(如果你有错误,请自己尝试并发布你的错误,这个博客是为了分享知识,而不是给开发人员灌输知识。谢谢。我写了整个代码,现在只出现了一个问题。当我重新启动应用程序时,它的映像重设为默认的src,即reg0。请签出更新的程序从onS获取存储的sharedP值。)Start方法,我刚刚修改了代码。如果效果良好,请接受答案。谢谢。您在onStart()中将0分配给了“count\u key”这将选择Reg0的默认图像问题是它没有保存其状态,当应用程序关闭时,它将重置为默认图像…我正在更新我的代码,请检查它我认为我看到了错误,您将计数定义为int,并在onCreate中调用它以显示图像,因此它将始终显示默认给定的整数。更改此:“int f=sharedReferences.getInt(“count_key”,count);if(count==0){aButton4.setImageResource(R.drawable.reg0);}到这个'int f=SharedReferences.getInt(“count_key”,1);“您想要的值,默认int值”if(f==0){aButton4.setImageResource(R.drawable.reg0);}'但是为什么您要将1分配给count_key,而此int count只是用于条件检查,那么为什么它不起作用呢?您没有将1分配给count_key,如果SharedReferences没有找到count_key,它将采用默认值,在您的情况下是count?因此在onCreate中,count的默认值是您设置在顶部的值(私有int count=…来自android开发者,公共抽象int getInt(字符串键,int defValue)在API级别1中添加,从首选项检索int值。参数键字符串:要检索的首选项的名称。defValue int:如果此首选项不存在,则返回值。如果此首选项存在,则返回int,如果此首选项不存在,则返回defValue。如果此名称的首选项不在首选项中,则抛出ClassCastExceptionT