Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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_Crash_Sharedpreferences - Fatal编程技术网

Java 使用共享首选项时应用程序崩溃

Java 使用共享首选项时应用程序崩溃,java,android,crash,sharedpreferences,Java,Android,Crash,Sharedpreferences,我正在制作一个简单的应用程序,它计算一个按钮的点击次数,并用共享的首选项保存整数。我用下面的代码进行了尝试,但是如果我试图打开“Singleplayer”,应用程序就会一直崩溃 公共类Singleplayer扩展了AppCompative活动{ 私有int-sp1; 私人int记录; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.act

我正在制作一个简单的应用程序,它计算一个按钮的点击次数,并用共享的首选项保存整数。我用下面的代码进行了尝试,但是如果我试图打开“Singleplayer”,应用程序就会一直崩溃

公共类Singleplayer扩展了AppCompative活动{
私有int-sp1;
私人int记录;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_singleplayer);
最终按钮button1=(按钮)findViewById(R.id.ButtonSpiel1);
最终文本视图lbl1=(文本视图)findViewById(R.id.lblspieler1);
最终文本视图lbl2=(文本视图)findViewById(R.id.lblrekord);
SharedReferences数据\ U记录=GetSharedReferences(“savegame”,0);
record=data\u record.getInt(“myKey1”,0);
lbl2.setText(String.valueOf(record));
button1.setOnClickListener(新视图.OnClickListener()
{
公共void onClick(最终视图v)
{
如果(sp1<记录){
sp1++;
lbl1.setText(String.valueOf(sp1));
}
else if(sp1>=记录)
{
sp1++;
记录++;
lbl1.setText(String.valueOf(sp1));
lbl2.setText(String.valueOf(record));
}
}
});
}
@凌驾
受保护的void onStop(){
super.onStop();
SharedReferences数据\ U记录=GetSharedReferences(“savegame”,0);
SharedReferences.Editor=data_record.edit();
editor.putString(“myKey1”,String.valueOf(record));
commit();
}

}

您在
桌面()
中使用了SharedPreference,因此您将面临许多问题,我建议在单击方法末尾使用它

 button1.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(final View v)
        {


            if(sp1< record) {
                sp1++;
                lbl1.setText(String.valueOf(sp1));
            }
            else if(sp1>= record)
            {
                sp1++;
                record++;
                lbl1.setText(String.valueOf(sp1));
                lbl2.setText(String.valueOf(record));

            }

SharedPreferences data_record = getSharedPreferences("savegame", 0);
    SharedPreferences.Editor editor = data_record.edit();
    editor.putString("myKey1", String.valueOf(record));
    editor.commit();
        }
    });
button1.setOnClickListener(新视图.OnClickListener()
{
公共void onClick(最终视图v)
{
如果(sp1<记录){
sp1++;
lbl1.setText(String.valueOf(sp1));
}
else if(sp1>=记录)
{
sp1++;
记录++;
lbl1.setText(String.valueOf(sp1));
lbl2.setText(String.valueOf(record));
}
SharedReferences数据\ U记录=GetSharedReferences(“savegame”,0);
SharedReferences.Editor=data_record.edit();
editor.putString(“myKey1”,String.valueOf(record));
commit();
}
});
那么为什么应用程序会崩溃,因为SharedRef没有任何值,它是null


请检查

请阅读:我更改了
私人int记录
私有整数记录现在它可以完美地工作了
 button1.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(final View v)
        {


            if(sp1< record) {
                sp1++;
                lbl1.setText(String.valueOf(sp1));
            }
            else if(sp1>= record)
            {
                sp1++;
                record++;
                lbl1.setText(String.valueOf(sp1));
                lbl2.setText(String.valueOf(record));

            }

SharedPreferences data_record = getSharedPreferences("savegame", 0);
    SharedPreferences.Editor editor = data_record.edit();
    editor.putString("myKey1", String.valueOf(record));
    editor.commit();
        }
    });