Java 使用共享首选项时应用程序崩溃
我正在制作一个简单的应用程序,它计算一个按钮的点击次数,并用共享的首选项保存整数。我用下面的代码进行了尝试,但是如果我试图打开“Singleplayer”,应用程序就会一直崩溃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扩展了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();
}
});