java - 我如何访问该类(class)

标签 java android

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/

相关文章:

java - 使用 toCharArray() 的字符串文字在 Java 中产生垃圾

java - 在 setContentId() 之后将占位符返回到其 'empty' 状态

java - oncreate 中的 Textwatcher android

java - gl.glClearColor 有什么作用?

java - 正在生成 PDF 报告 : jFreeChart and DynamicReports

java - 创建计划任务,在指定时间后执行

java - 我在 Eclipse 中使用 Java 时遇到问题,无法找到明显存在的文件

java - 与android线程相关的looper、handler等术语是什么?这些类之间有何关系?

Android HttpResponseCache 不工作 - FileNotFoundException

java - _ah/admin 不适用于 Openshift?