Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否将字段[].getName()获取为可访问字符串?_Android_String - Fatal编程技术网

Android 是否将字段[].getName()获取为可访问字符串?

Android 是否将字段[].getName()获取为可访问字符串?,android,string,Android,String,我正在开发一个小函数,它加载“原始”文件夹中的所有文件,然后根据前缀确定它们是否应保存在向量中。这是为我想在游戏中使用的“水平加载”机制做准备。我的职能是: public void LoadRaws(){ Field[] fields=R.raw.class.getFields(); for(int count=0; count < fields.length; count++){ StringStorage.add(fields[count].getNam

我正在开发一个小函数,它加载“原始”文件夹中的所有文件,然后根据前缀确定它们是否应保存在向量中。这是为我想在游戏中使用的“水平加载”机制做准备。我的职能是:

public void LoadRaws(){
    Field[] fields=R.raw.class.getFields();
    for(int count=0; count < fields.length; count++){
        StringStorage.add(fields[count].getName());
    }

    for(int i = 0; i < StringStorage.size(); i++){
        Log.i("Asset", StringStorage.get(i));
    }
}
public void LoadRaws(){
Field[]fields=R.raw.class.getFields();
for(int count=0;count
Log.i();函数将文件名整齐地打印到我的LogCat。但是,当我尝试以下方法时:

for(int i = 0; i < StringStorage.size()-1; i++){
    Message(StringStorage.get(i));
}
for(int i=0;i
要推送包含字符串的消息框,我会得到一个nullPointerException。这是日志:

11-19 14:08:51.881: E/AndroidRuntime(4161): FATAL EXCEPTION: main
11-19 14:08:51.881: E/AndroidRuntime(4161): Process: com.example.whoops, PID: 4161
11-19 14:08:51.881: E/AndroidRuntime(4161): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.whoops/com.example.whoops.Game}: java.lang.NullPointerException
11-19 14:08:51.881: E/AndroidRuntime(4161):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2439)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2495)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at android.app.ActivityThread.access$800(ActivityThread.java:153)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at android.os.Handler.dispatchMessage(Handler.java:102)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at android.os.Looper.loop(Looper.java:157)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at android.app.ActivityThread.main(ActivityThread.java:5633)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at java.lang.reflect.Method.invokeNative(Native Method)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at  java.lang.reflect.Method.invoke(Method.java:515)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:896)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at dalvik.system.NativeStart.main(Native Method)
11-19 14:08:51.881: E/AndroidRuntime(4161): Caused by: java.lang.NullPointerException
11-19 14:08:51.881: E/AndroidRuntime(4161):     at android.content.ContextWrapper.getApplicationInfo(ContextWrapper.java:159)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at android.view.ContextThemeWrapper.getTheme(ContextThemeWrapper.java:104)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:143)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at android.app.AlertDialog$Builder.<init>(AlertDialog.java:360)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at com.example.whoops.UtilLib.Message(UtilLib.java:186)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at com.example.whoops.LevelStorage.LoadRaws(LevelStorage.java:35)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at com.example.whoops.Game.onCreate(Game.java:55)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at android.app.Activity.performCreate(Activity.java:5312)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1111)
11-19 14:08:51.881: E/AndroidRuntime(4161):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2395)
11-19 14:08:51.881: E/AndroidRuntime(4161):     ... 11 more
11-1914:08:51.881:E/AndroidRuntime(4161):致命异常:main
11-1914:08:51.881:E/AndroidRuntime(4161):进程:com.example.whoops,PID:4161
11-19 14:08:51.881:E/AndroidRuntime(4161):java.lang.RuntimeException:无法启动活动组件信息{com.example.whoops/com.example.whoops.Game}:java.lang.NullPointerException
11-19 14:08:51.881:E/AndroidRuntime(4161):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2439)
11-19 14:08:51.881:E/AndroidRuntime(4161):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2495)
11-19 14:08:51.881:E/AndroidRuntime(4161):在android.app.ActivityThread.access$800(ActivityThread.java:153)
11-19 14:08:51.881:E/AndroidRuntime(4161):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349)
11-19 14:08:51.881:E/AndroidRuntime(4161):在android.os.Handler.dispatchMessage(Handler.java:102)上
11-1914:08:51.881:E/AndroidRuntime(4161):在android.os.Looper.loop(Looper.java:157)上
11-19 14:08:51.881:E/AndroidRuntime(4161):位于android.app.ActivityThread.main(ActivityThread.java:5633)
11-19 14:08:51.881:E/AndroidRuntime(4161):位于java.lang.reflect.Method.Invokenactive(本机方法)
11-19 14:08:51.881:E/AndroidRuntime(4161):在java.lang.reflect.Method.invoke(Method.java:515)
11-19 14:08:51.881:E/AndroidRuntime(4161):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:896)
11-1914:08:51.881:E/AndroidRuntime(4161):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712)
11-1914:08:51.881:E/AndroidRuntime(4161):在dalvik.system.NativeStart.main(本机方法)
11-19 14:08:51.881:E/AndroidRuntime(4161):由以下原因引起:java.lang.NullPointerException
11-19 14:08:51.881:E/AndroidRuntime(4161):位于android.content.ContextWrapper.getApplicationInfo(ContextWrapper.java:159)
11-19 14:08:51.881:E/AndroidRuntime(4161):在android.view.ContextThemeWrapper.getTheme(ContextThemeWrapper.java:104)
11-19 14:08:51.881:E/AndroidRuntime(4161):在android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:143)上
11-19 14:08:51.881:E/AndroidRuntime(4161):在android.app.AlertDialog$Builder上。(AlertDialog.java:360)
11-1914:08:51.881:E/AndroidRuntime(4161):在com.example.whoops.UtilLib.Message(UtilLib.java:186)上
11-19 14:08:51.881:E/AndroidRuntime(4161):在com.example.whoops.LevelStorage.LoadRaws(LevelStorage.java:35)
11-1914:08:51.881:E/AndroidRuntime(4161):在com.example.whoops.Game.onCreate(Game.java:55)
11-19 14:08:51.881:E/AndroidRuntime(4161):在android.app.Activity.performCreate(Activity.java:5312)上
11-19 14:08:51.881:E/AndroidRuntime(4161):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1111)
11-19 14:08:51.881:E/AndroidRuntime(4161):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2395)
11-1914:08:51.881:E/AndroidRuntime(4161):。。。还有11个
我不知道它为什么会这样做,因为在定义这些文件的ID之前获取名称是至关重要的。有人知道我为什么会犯这个错误吗?我该怎么解决呢

-祖巴加

试试看

for(int i = 0; i < StringStorage.size()-1; i++){
try{
     Message(StringStorage.get(i));
   }catch(Exception e){
    Log.i("Error at Index :",""+i);
   }
} 
for(int i=0;i

您可以捕获空指针并检测它的确切位置。

我已经设法自己修复了它,下面介绍了如何:

public void LoadRaws(){
    Field[] fields=R.raw.class.getFields();
    for(int count=0; count < fields.length; count++){
        StringStorage.add(fields[count].getName());
    }
}
public void LoadRaws(){
Field[]fields=R.raw.class.getFields();
for(int count=0;count
“LevelStorage”的上述功能运行良好。但是,当尝试从同一个类访问向量内部的数据时,它会给我一个错误。 然后我从我的“Game”类调用了这个函数,然后尝试在向量中循环,猜猜发生了什么?我得到了文件名。
谢谢所有帮助我的人,你们是最棒的

您的
UtilLib.java
文件的第186行是什么?您是否测试过任何
i
,对于(int i=0;i