我有这个班级
public class vartotojas {
String elpastas, slaptazodis;
public vartotojas (String elpastas,String slaptazodis)
{
this.elpastas = elpastas;
this.slaptazodis = slaptazodis;
}
}
我正在尝试在这个类中使用变量
public class saugykla {
public static final String SP_name = "vartotojoduomenys";
SharedPreferences saugykladb;
public saugykla (Context context){
saugykladb = context.getSharedPreferences(SP_name, 0);
}
public void saugoti (vartotojas user){
SharedPreferences.Editor SP_editor = saugykladb.edit();
SP_editor.putString("elpastas", vartotojas.elpastas);
}
}
我在最后一行vartotojas.elpastas
出错了我在vartotojas
之后放点后我做错了我没有选择elpastas的选项我在youtube上暂停了教程我完全按照youtubube进行了保存没错......我收到错误:error: non-static variable elpastas cannot be referenced from a static context
答案 0 :(得分:1)
将类名替换为实例名称:
SP_editor.putString("elpastas", vartotojas.elpastas);
|
V
SP_editor.putString("elpastas", user.elpastas);
为了能够通过类名访问类方法,该方法必须是静态的。
答案 1 :(得分:0)
首先,您应该熟悉Java命名约定,它会使您的代码更具可读性(例如,让您的类名以大写字母开头)。
其次,当您应该引用实例名称时,您将引用类名。在您的情况下,user
作为参数传递给方法,因此:
public void saugoti (vartotojas user){
SharedPreferences.Editor SP_editor = saugykladb.edit();
SP_editor.putString("elpastas", user.elpastas);
}
但这还不够。 user
无法访问elpastas
变量。您需要将其设置为非私有(我不确定他们在您的代码中包含哪些软件包),或者更优选的方式,将一些getter添加到您的vartotojas
类。
public class vartotojas {
String elpastas, slaptazodis;
public vartotojas (String elpastas,String slaptazodis) {
this.elpastas = elpastas;
this.slaptazodis = slaptazodis;
}
public String getElpstas() {
return this.elpastas;
}
public String getSlaptazodis() {
return this.slaptazodis;
}
}
然后,您需要通过getter访问变量:
public void saugoti (vartotojas user){
SharedPreferences.Editor SP_editor = saugykladb.edit();
SP_editor.putString("elpastas", user.getElpastas());
}
P.S。您还应该考虑是否要添加setter方法,或者构造函数中的初始化是否足够。
希望这有帮助。
答案 2 :(得分:0)
你很接近,但对局部变量的误解很小。
public void saugoti (vartotojas user){
SharedPreferences.Editor SP_editor = saugykladb.edit();
SP_editor.putString("elpastas", vartotojas.elpastas);
}
在方法中为类user
本地化变量vartotojas user
时
为什么你使用像vartotojas.elpastas
这样的行改变:
SP_editor.putString("elpastas", user.elpastas);
更多强>
如何访问此变量,例如class.field
read static Here。这基本上是全新的概念,你必须知道它(如果你不是)
另外,我建议您阅读并关注Java Code Conventions