///////////////////////////////////////////// ///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// ////////////////////アセットからテキストファイルを読み取ることができません(Android Studio、JAVA)
答えはヘンリーの言葉です。 アクティビティではないクラスからアセットにアクセスすることは不可能です。 メインアクティビティからパラメータとしてAssetManagerオブジェクトを渡した後、それが機能し、非アクティビティクラスメソッドがアセットを読み取ることができます。私の場合は :
AssetManager am = getAssets();
tc.ReadFile2(am);
////////////////////////////////////// ///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// ///////////////////////
アセットディレクトリから.txtを読み込む際に問題があります。私はほとんどすべてを試み、まだ結果は常に同じです:
I/System.out: java.lang.NullPointerException
これは、プロジェクトのディレクトリツリーをどのように見えるかです: directory tree
私はまた、資産の一覧を表示しようとしましたが、結果は上記と同じです。 ここに私のクラスの現在のコードは次のとおりです。
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を投稿できますか? –
完全例外メッセージは、Null Pointer Exceptionをスローしている特定の行番号を示します。そのエラーメッセージでコードのどの行が示されているかを教えていただけたら、おそらくあなたを助けることができます。 –
このクラスは、あなたが 'onCreate()'メソッドを持たないため、ソースによって参照される 'context'フィールドを持たないので、アクティビティの無効な実装と思われます。 – CommonsWare