gpt4 book ai didi

java - 从 android Activity 中提取并将其放入数据包类中的方法?会出什么问题?

转载 作者:行者123 更新时间:2023-11-30 03:45:49 25 4
gpt4 key购买 nike

大家好!

所以,我有这个 Activity ,它使用一些我自己制作的方法,这些方法当然包含其他方法,而那些其他方法恰好是 android.* 的一部分;包。

到目前为止没有什么奇怪的......

为了 Java 的缘故,我打算采用模块化并使我的代码美观,所以我想为什么不将我的方法提取到其他类中,它不是 Activity 子类,它只是一个包含我的静态方法的容器可以从我的 Activity 中调用....

更准确地说,这是我的方法:

// This function reads a txt file is my MATLAB vector and converts it
// into an Integer[] array for use by the plot function
public Integer[] convertFiletoIntegerArray(int id)
throws NotFoundException, NumberFormatException {

List<Integer> vector = new ArrayList<Integer>();

InputStream in = getResources().openRawResource(id);
Scanner sc = new Scanner(new InputStreamReader(in));

while (sc.hasNext()) {

vector.add(Integer.parseInt(sc.nextLine()));
}

Integer[] splVector = vector.toArray(new Integer[0]);
return splVector;
}

我将这段代码裁剪粘贴到我的 Methods.java 类中...

一开始我将我的方法声明为静态的,但一直出现此错误:

line 81: InputStream in = getResources().openRawResource(id);

error: The method getResources() is undefined for the type Methods

根据我的考虑,getResources() 方法不能在不是 Activity 或其他东西的类中使用....

我真的不知道如何解决这个问题,我再次寻求帮助..

谢谢!

最佳答案

该方法需要访问上下文或资源。您有两个选择:

  1. 将上下文作为参数传递给方法
  2. 将上下文传递给 Methods 构造函数并将其保存为成员字段。

我推荐第一个,因为根据您的代码结构,如果 Activity 被销毁并重新创建(例如,由于设备重新定向),第二个可能会泄漏内存。第一种方法的额外好处是允许该方法是静态的。

public static Integer[] convertFiletoIntegerArray(int id, Context activity)
throws NotFoundException, NumberFormatException {

List<Integer> vector = new ArrayList<Integer>();

InputStream in = activity.getResources().openRawResource(id);
Scanner sc = new Scanner(new InputStreamReader(in));

while (sc.hasNext()) {

vector.add(Integer.parseInt(sc.nextLine()));
}

Integer[] splVector = vector.toArray(new Integer[0]);
return splVector;
}

关于java - 从 android Activity 中提取并将其放入数据包类中的方法?会出什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15025179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com