我有一个应用程序,我试图将按钮点击次数限制为五次,然后一旦用户按下此按钮五次就应该禁用。
但是我收到了上述错误,我不确定原因。
有什么想法吗?
buttonadd.setOnClickListener(new OnClickListener () {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), MainActivity3.class);
startActivity(intent);
int clicks = 0;
clicks++;
if (clicks >= 5){
buttonadd.setEnabled(false);
}
SharedPreferences prefs = Context.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("clicks", clicks);
editor.apply();
}
});
答案 0 :(得分:5)
您错误地尝试以静态方式使用虚拟方法getSharedPreferences()
,这就是它给出编译时错误的原因。
如果该代码位于Activity
,请替换
Context.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
与
getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
如果它在Fragment
中,请使用
getActivity().getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
修改强>
使用
if (clicks >= 5){
buttonadd.setEnabled(false);
buttonadd.setClickable(false);
buttonadd.setFocusable(false);
buttonadd.setFocusableInTouchMode(false);
}
并使clicks
成为类成员,即将其声明为
private int clicks;
<{1>}中的。
编辑2:
我想我已经理解了你犯的错误。在您的代码中,替换
Activity
与
int clicks = 0;
试试这个。这应该做到。
答案 1 :(得分:2)
这意味着您需要Context
对象的实例来调用getSharedPreferences()
方法。如果您在Activity
内,请尝试以下操作:
this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE)
答案 2 :(得分:0)
正如错误消息所示,getSharedPreferences()
是一种非静态方法。当你Context.getSharedPreferences(...)
时,你试图直接从课堂上调用它。相反,您需要从Context
实例调用它。
如果您的代码位于Activity
内(Activity
扩展Context
),您只需执行以下操作:
SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);