Can';t从资产中读取文本文件(Android Studio,JAVA)

Can';t从资产中读取文本文件(Android Studio,JAVA),java,android,Java,Android,///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 所以答案是亨利说的。 不可能从不是活动的类访问资产。 将AssetManager对象作为主活动的参数传递后,它就可以工作了,非活动类方法就可以读取资产了。 就我而言: Asse

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

所以答案是亨利说的。 不可能从不是活动的类访问资产。 将AssetManager对象作为主活动的参数传递后,它就可以工作了,非活动类方法就可以读取资产了。 就我而言:

AssetManager am = getAssets();
tc.ReadFile2(am);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

我在从资产目录中读取.txt时遇到问题。我尝试了几乎所有的方法,但结果总是一样的:

I/System.out: java.lang.NullPointerException
以下是项目目录树的外观:

我也试着列出资产,但结果和上面一样。 下面是我的班级的当前代码:

import  java.io.*;
import java.lang.*;

import android.content.res.AssetManager;
import android.support.v7.app.AppCompatActivity;

public class TextChange extends AppCompatActivity {
public  TextChange(){}

protected String ReadFile() throws IOException{
    BufferedReader reader = null;
    reader = new BufferedReader(new InputStreamReader(context.getAssets().open("sampleText.txt")));
    String text = "";
    while (reader.readLine() != null){
        text = reader.readLine();
    }
    System.out.println(text);
    return text;
}

protected String ReadFile2() throws IOException{
    StringBuilder buf = new StringBuilder();
    InputStream input = getAssets().open("sampleText2.txt");
    BufferedReader in = new BufferedReader(new InputStreamReader(input, "UTF-8"));
    String str;

    while ((str=in.readLine()) != null) {
        buf.append(str);
    }

    in.close();

    return buf.toString();
}

public String[] ListAssets() throws IOException{
    AssetManager am = getAssets();
    String[] files = am.list("");
    for (String s : files) {
        System.out.println(s);
    }
    return files;
}
}
有人能告诉我什么地方出了问题,以及如何解决这个问题吗? 欢迎任何帮助

printStackTrace:

W/System.err: java.lang.NullPointerException
W/System.err:     at android.content.ContextWrapper.getAssets(ContextWrapper.java:83)
W/System.err:     at jb.jbench.TextChange.ReadFile2(TextChange.java:28)
W/System.err:     at jb.jbench.MainActivity$3.onClick(MainActivity.java:43)
W/System.err:     at android.view.View.performClick(View.java:4438)
W/System.err:     at android.view.View$PerformClick.run(View.java:18422)
W/System.err:     at android.os.Handler.handleCallback(Handler.java:733)
W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
W/System.err:     at android.os.Looper.loop(Looper.java:136)
W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5001)
W/System.err:     at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err:     at java.lang.reflect.Method.invoke(Method.java:515)
W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
W/System.err:     at dalvik.system.NativeStart.main(Native Method)

您不能自己实例化
活动
类。总是让系统去做。只能使用
意图启动活动,否则重要字段将无法正确初始化


如果要将功能放入单独的类中,请不要扩展
活动
并将所需的上下文作为参数传递。

哪一行是NullPointerException?您可以发布完整的StackTrace吗?完整异常消息将为您提供引发空指针异常的特定行号。如果您能告诉我们错误消息指示代码中的哪一行,我们可能会帮助您。此类似乎也是活动的无效实现,因为您没有
onCreate()
方法,您没有源引用的
上下文
字段,等等。在主活动中,我创建类的对象,并在单击action时调用此方法。
不可能从非活动的类访问资产。
这是什么废话?但是,我不会启动任何新活动。我在主活动中所做的一切就是调用方法来读取资产。这个方法调用
getAssets
,它不起作用,因为
activity
没有初始化。所以,如果类不是活动,那么只需要函数类做一些工作,只有当您将其作为参数传递时,它才能访问资产。因此,解决方案是在活动中加载资产,并使用所需的资产调用方法?