如何使用资源中的字符串数组声明数组?

how to declare array using string array from resource?

我在资源目录中创建了一个包含三个项目值的字符串数组。然后尝试将数组放入字符串 x 中。它没有显示任何错误,但崩溃了。

 String x[]= getResources().getStringArray(R.array.z_array);
    String y[]={"1","2","3"};
enter code here

字符串数组代码如下-

<string-array name="z_array">
<item>a</item>
<item>b</item>
<item>c</item>

而不是像上面那样声明 x[],如果我使用

     String x[]= {"a","b","c"};

它工作正常。

这是我的自定义适配器代码-

   public class MyCustomAdapter extends ArrayAdapter{
    public MyCustomAdapter(Context context, int textViewResourceId,
                           String[] objects,String[] objects2){

        super(context, textViewResourceId, objects);

    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return getCustomView(position, convertView, parent);
    }

    public View getCustomView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = getLayoutInflater();

        View view = inflater.inflate(R.layout.activity_list_view, parent, false);

        TextView nameV= (TextView) view.findViewById(R.id.uuuu);

        nameV.setText(x[position]);

        TextView authorNameV = (TextView) view.findViewById(R.id.vvvv);
        authorNameV.setText(y[position]);

        switch (position) {
            default:
                break;
        }

        return view ;
    }

}

我的问题是如何使用资源中的字符串数组声明数组?

Logcat

    02-25 03:45:34.851 5845-5845/? E/memtrack: Couldn't load memtrack module (No such file or directory)
02-25 03:45:34.851 5845-5845/? E/android.os.Debug: failed to load memtrack module: -2
02-25 03:45:40.011 5857-5857/? E/memtrack: Couldn't load memtrack module (No such file or directory)
02-25 03:45:40.011 5857-5857/? E/android.os.Debug: failed to load memtrack module: -2
02-25 03:45:40.741 5870-5870/? E/memtrack: Couldn't load memtrack module (No such file or directory)
02-25 03:45:40.741 5870-5870/? E/android.os.Debug: failed to load memtrack module: -2
02-25 03:45:40.931 5881-5881/? E/AndroidRuntime: in writeCrashedAppName, pkgName :maruf.infinity.story.englishshortstories
02-25 03:45:40.931 5881-5881/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                 Process: maruf.infinity.story.englishshortstories, PID: 5881
                                                 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{maruf.infinity.story.englishshortstories/maruf.infinity.story.englishshortstories.MainActivity}: java.lang.NullPointerException
                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121)
                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
                                                     at android.app.ActivityThread.access0(ActivityThread.java:135)
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                     at android.os.Looper.loop(Looper.java:136)
                                                     at android.app.ActivityThread.main(ActivityThread.java:5021)
                                                     at java.lang.reflect.Method.invokeNative(Native Method)
                                                     at java.lang.reflect.Method.invoke(Method.java:515)
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
                                                     at dalvik.system.NativeStart.main(Native Method)
                                                  Caused by: java.lang.NullPointerException
                                                     at android.content.ContextWrapper.getResources(ContextWrapper.java:89)
                                                     at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:78)
                                                     at android.support.v7.app.AppCompatActivity.getResources(AppCompatActivity.java:542)
                                                     at maruf.infinity.story.englishshortstories.MainActivity.<init>(MainActivity.java:35)
                                                     at java.lang.Class.newInstanceImpl(Native Method)
                                                     at java.lang.Class.newInstance(Class.java:1208)
                                                     at android.app.Instrumentation.newActivity(Instrumentation.java:1064)
                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112)
                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
                                                     at android.app.ActivityThread.access0(ActivityThread.java:135) 
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                     at android.os.Looper.loop(Looper.java:136) 
                                                     at android.app.ActivityThread.main(ActivityThread.java:5021) 
                                                     at java.lang.reflect.Method.invokeNative(Native Method) 
                                                     at java.lang.reflect.Method.invoke(Method.java:515) 
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827) 
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643) 
                                                     at dalvik.system.NativeStart.main(Native Method) 
02-25 03:45:41.311 5898-5898/? E/AndroidRuntime: in writeCrashedAppName, pkgName :maruf.infinity.story.englishshortstories
02-25 03:45:41.311 5898-5898/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                 Process: maruf.infinity.story.englishshortstories, PID: 5898
                                                 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{maruf.infinity.story.englishshortstories/maruf.infinity.story.englishshortstories.MainActivity}: java.lang.NullPointerException
                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121)
                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
                                                     at android.app.ActivityThread.access0(ActivityThread.java:135)
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                     at android.os.Looper.loop(Looper.java:136)
                                                     at android.app.ActivityThread.main(ActivityThread.java:5021)
                                                     at java.lang.reflect.Method.invokeNative(Native Method)
                                                     at java.lang.reflect.Method.invoke(Method.java:515)
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
                                                     at dalvik.system.NativeStart.main(Native Method)
                                                  Caused by: java.lang.NullPointerException
                                                     at android.content.ContextWrapper.getResources(ContextWrapper.java:89)
                                                     at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:78)
                                                     at android.support.v7.app.AppCompatActivity.getResources(AppCompatActivity.java:542)
                                                     at maruf.infinity.story.englishshortstories.MainActivity.<init>(MainActivity.java:35)
                                                     at java.lang.Class.newInstanceImpl(Native Method)
                                                     at java.lang.Class.newInstance(Class.java:1208)
                                                     at android.app.Instrumentation.newActivity(Instrumentation.java:1064)
                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112)
                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
                                                     at android.app.ActivityThread.access0(ActivityThread.java:135) 
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                     at android.os.Looper.loop(Looper.java:136) 
                                                     at android.app.ActivityThread.main(ActivityThread.java:5021) 
                                                     at java.lang.reflect.Method.invokeNative(Native Method) 
                                                     at java.lang.reflect.Method.invoke(Method.java:515) 
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827) 
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643) 
                                                     at dalvik.system.NativeStart.main(Native Method) 
02-25 03:45:41.451 5910-5910/? E/AndroidRuntime: in writeCrashedAppName, pkgName :maruf.infinity.story.englishshortstories
02-25 03:45:41.451 5910-5910/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                 Process: maruf.infinity.story.englishshortstories, PID: 5910
                                                 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{maruf.infinity.story.englishshortstories/maruf.infinity.story.englishshortstories.MainActivity}: java.lang.NullPointerException
                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121)
                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
                                                     at android.app.ActivityThread.access0(ActivityThread.java:135)
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                     at android.os.Looper.loop(Looper.java:136)
                                                     at android.app.ActivityThread.main(ActivityThread.java:5021)
                                                     at java.lang.reflect.Method.invokeNative(Native Method)
                                                     at java.lang.reflect.Method.invoke(Method.java:515)
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
                                                     at dalvik.system.NativeStart.main(Native Method)
                                                  Caused by: java.lang.NullPointerException
                                                     at android.content.ContextWrapper.getResources(ContextWrapper.java:89)
                                                     at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:78)
                                                     at android.support.v7.app.AppCompatActivity.getResources(AppCompatActivity.java:542)
                                                     at maruf.infinity.story.englishshortstories.MainActivity.<init>(MainActivity.java:35)
                                                     at java.lang.Class.newInstanceImpl(Native Method)
                                                     at java.lang.Class.newInstance(Class.java:1208)
                                                     at android.app.Instrumentation.newActivity(Instrumentation.java:1064)
                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112)
                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
                                                     at android.app.ActivityThread.access0(ActivityThread.java:135) 
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                     at android.os.Looper.loop(Looper.java:136) 
                                                     at android.app.ActivityThread.main(ActivityThread.java:5021) 
                                                     at java.lang.reflect.Method.invokeNative(Native Method) 
                                                     at java.lang.reflect.Method.invoke(Method.java:515) 
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827) 
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643) 
                                                     at dalvik.system.NativeStart.main(Native Method) 

你从资源中获取数组的代码没问题。为了确保您的 x[] 值,您可以在 logcat

上打印它们
for (String name : x) {
        Log.d(name);
    }

有一个很大的但是,我想你在 MainActivity 中创建了你的适配器作为内部 class 对吧?

如果否:您的 x[] 和 y[] 为空。 如果是:告诉我如何实例化您的适配器并将其设置为您的列表视图。