import android.content.Context;
import android.content.SharedPreferences;
import android.net.Uri;
public class LoadSettings
{
public static void LoadMySettings (Context ctx)
{
SharedPreferences sharedPreferences = ctx.getSharedPreferences("MY_SHARED_PREF", 0);
String strSavedMem1 = sharedPreferences.getString("gSendTo", "");
String strSavedMem2 = sharedPreferences.getString("gInsertInto", "");
String cCalId = sharedPreferences.getString("gCalID", "");
setInsertIntoStr(strSavedMem2);
setSendToStr(strSavedMem1);
}
private static String cSendToStr;
private static String cInsertIntoStr;
private int cCalId;
private Uri cCalendars;
public String getSendToStr()
{
return this.cSendToStr;
}
public static void setSendToStr(String pSendToStr)
{
cSendToStr = pSendToStr;
}
public String getInsertIntoStr()
{
return this.cInsertIntoStr;
}
public static void setInsertIntoStr(String pInsertIntoStr)
{
cInsertIntoStr = pInsertIntoStr;
}
}
从调用类中我已经尝试了很多当前的方法。
LoadSettings.LoadMySettings(this);
但是当我尝试获取一些数据时。
textSavedMem1.setText(LoadSettings.getSendToStr());
我收到一个 Null 错误。
最佳答案
LoadMySettings
不是一个类,而是一个方法(因此,如果您遵循 Oracle/Sun 的 Java 语言命名约定,它应该以小写字母开头)。
您确实可以通过调用LoadSettings.loadMySettings(someContext)
来访问它,其中someContext
是要传递的上下文。在您的示例中,我们不知道 this
指的是什么,所以也许您的错误就在那里。
然后当你这样做时:textSavedMem1.setText(LoadSettings.getSendToStr());
您调用非静态方法,因此应该使用 LoadSettings
的实例,或者更可能考虑到您的代码,您可以将 getSendToStr
更改为:
public static String getSendToStr()
{
return cSendToStr;
}
尽管这似乎是一个相当糟糕的设计。
也许如果您告诉我们更多有关您尝试做什么的信息,我们可以提供更多帮助,因此我们的答案只会让您更进一步。
<小时/>编辑: 好吧,我刚刚弄清楚你想要做什么......
您需要回去学习基本的 Java 概念,首先阅读访问修饰符和构造函数,以及 Java 中的 OO 语义一般。
将您的类(class)更改为:
public class LoadSettings
{
public LoadSettings(Context ctx)
{
SharedPreferences sharedPreferences =
ctx.getSharedPreferences("MY_SHARED_PREF", 0);
String strSavedMem1 = sharedPreferences.getString("gSendTo", "");
String strSavedMem2 = sharedPreferences.getString("gInsertInto", "");
String cCalId = sharedPreferences.getString("gCalID", "");
setInsertIntoStr(strSavedMem2);
setSendToStr(strSavedMem1);
}
private String cSendToStr;
private String cInsertIntoStr;
private int cCalId;
private Uri cCalendars;
public String getSendToStr()
{
return cSendToStr;
}
public void setSendToStr(String pSendToStr)
{
cSendToStr = pSendToStr;
}
public String getInsertIntoStr()
{
return cInsertIntoStr;
}
public void setInsertIntoStr(String pInsertIntoStr)
{
cInsertIntoStr = pInsertIntoStr;
}
}
并使用以下内容创建 LoadSettings
的新实例:
LoadSettings mySettings = new LoadSettings(someContext);
然后您可以正确调用:
textSavedMem1.setText(mySettings.getSendToStr());
关于java - 我如何访问该类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11444788/