Java 删除备份时出现问题-ANDROID STUDIO

Java 删除备份时出现问题-ANDROID STUDIO,java,android,mobile,Java,Android,Mobile,意向意向1=新意向(问题.this,问题.class); 星触觉(intent1) 我的学习有点问题。 对不起我的法语^^ 每次我按下一个按钮,一个变量都会改变,它会备份并赋值++ 在按钮输入中,如果变量==In table REPONSE.Length,它将重新启动活动并删除备份 我的问题是,当活动重新启动时,备份不会自动删除 每次我支持它再次引发的活动时,都无法在阶段0再次启动 int-response[]=新int[5]//报告表 整数问题=0; @凌驾 创建时受保护的void(Bund

意向意向1=新意向(问题.this,问题.class); 星触觉(intent1)

我的学习有点问题。 对不起我的法语^^

每次我按下一个按钮,一个变量都会改变,它会备份并赋值++

在按钮输入中,如果变量==In table REPONSE.Length,它将重新启动活动并删除备份

我的问题是,当活动重新启动时,备份不会自动删除

每次我支持它再次引发的活动时,都无法在阶段0再次启动

int-response[]=新int[5]//报告表
整数问题=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.questions);
SharedPreferences SharedPreferences=getPreferences(模式\私人);
Question=SharedReferences.getInt(“num”,0);
cardView1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//重新启动si问题==REPONSE.length
如果(问题==响应长度){
SharedPreferences SharedPreferences=getPreferences(模式\私人);
SharedReferences.Editor=SharedReferences.edit();
删除(“num”);
editor.apply();
意向意向1=新意向(问题.this,问题.class);
星触觉(intent1);
}
//索维嘉德酒店
SharedPreferences SharedPreferences=getPreferences(模式\私人);
SharedReferences.Editor=SharedReferences.edit();
编辑器.putInt(“num”,问号++);
editor.apply();
//递增+1
问题++;
}

})}
我向您推荐三点:

第1点:

尝试为您的共享首选项命名。例如:

SharedReferences=getSharedReferences(“SharedReferName”,MODE\u PRIVATE)

如果您没有为共享首选项命名,android可能会陷入歧义,并创建一个新的SharedReference,从而不会影响旧的SharedReference

即使您正在onClick方法中创建一个新的SharedReference(这个过程是错误的),android系统也无法理解使用哪个共享首选项,因此不会影响您想要更改的SharedReference数据

第2点:

这一点没有第一个重要,但要更改已存在首选项的数据,您无需删除首选项,只需更改值,它将根据您的要求进行更新:

SharedReferences.edit().putInt(“num”,问号++).apply()

第3点:

  • 在类中创建一次SharedReference对象 具有全球范围

  • 在内部的活动中仅初始化SharedReference一次 onCreate方法

使您的代码如下所示:

public class MainActivity extends AppCompatActivity {
        SharedPreferences sharedPreferences;
        ConstraintLayout layout;
        int Question = 0;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.layout_main);
            layout = findViewById(R.id.layout);

            sharedPreferences = getSharedPreferences("sharedPrefName", MODE_PRIVATE);
            Question = sharedPreferences.getInt("num",0);
            layout.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    sharedPreferences.edit().putInt("num", Question++).apply();
                }
            });

        }
}
根据remove()函数,调用commit()后,将删除一个值。因此,您必须将editor.apply()更改为editor.commit()


@AudricPazza在你的项目中首先尝试代码,然后接受并投票选出帮助你解决问题的答案。在StackOverflow中,这是表达感谢的最好方式。
//Restart si Question == REPONSE.length
     if (Question == REPONSE.length){
                        SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
                        SharedPreferences.Editor editor = sharedPreferences.edit();
                        editor.remove("num");
                        editor.commit();  //editor.apply() won't work