来自另一个类的Android Context

时间:2011-09-10 11:56:31

标签: android android-context

我要做的是以下......

FileInputStream fIn;
try {
fIn = openFileInput("samplefile.txt");
InputStreamReader isr = new InputStreamReader(fIn);
BufferedReader br = new BufferedReader(isr);
isTrue = Boolean.parseBoolean(br.readLine());
Log.i("IN", "isTrue = " + isTrue);
}

但这只会在扩展Android内Activity类的类中起作用。

我有一个“设置”类,可以从文件中写入和读取当前游戏设置,但是这个文件有很多我真的不想操作的数据。

我最初使用BufferedReader& BufferedWriter但我无法将数据设置为私有,这意味着任何人都可以编辑该文件。使用OutputStreamWriter,至少

会更安全一点

如何让我的切除“设置”类(具有完全静态方法)可以访问上下文,因此我可以使用诸如openFileInput

之类的方法

3 个答案:

答案 0 :(得分:3)

为具有Context参数的Settings类创建构造函数。然后,当您从该类实例化该对象时,只需传递您的应用程序上下文即可。

构造

 public Settings(Context cont)
{
     //do something with the context, e.g assign it to some private variable of type Context

}

在您的活动课程中:

Settings settings = new Settings(MyActivity.this);

答案 1 :(得分:1)

使用File类更合适,而不是传递上下文。您应该尽可能避免将上下文传递给其他类。

    File file = new File("sample.txt");
    InputStream is = new FileInputStream(file);

另一种选择可能是将上下文传递给方法。

boolean isTrue = Settings.readBoolean(MyClass.this);

答案 2 :(得分:0)

如果您将多个片段与多个活动一起使用,则没有一种获取上下文的快捷方法。 创建一个静态类。 定义上下文。 每当您更改活动时,请更改上下文。 使用该静态类获取片段中的上下文。 我知道您可以通过getactivity()在片段中获取上下文,但是如果您使用某些适配器或非上下文类,这将非常有用