What's my mistake? I want to get an array of strings from resources in the adapter, passing context:
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.MyHolder> { Context context; public RecyclerAdapter (Context context){ this.context = context; } String [] _names = context.getResources().getStringArray(R.array._names); Or so:
public class MyContextWrapper extends ContextWrapper { public MyContextWrapper(Context base) { super(base); } public String[] getCategoryName(){ String[] names = getResources().getStringArray(R.array._names); return names; } and in the adapter
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.MyHolder> { Context context; String[] _names = new MyContextWrapper(context).getCategoryName(); And in both cases I get NPE in getResources (). GetStringArray (R.array._names);
Strings.xml:
<resources> <string name="app_name">noyify</string> <string-array name="_names"> <item>Pic1</item> <item>Pic2</item> <item>Pic3</item> <item>Pic4</item> <item>Pic5</item> </string-array> Just in case, the example with a wrapper:
03-15 14:44:38.497 8153-8153/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.vadik.noyify, PID: 8153 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.vadik.noyify/com.example.vadik.noyify.MainActivity}: java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) at android.app.ActivityThread.access$800(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:5001) 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:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at com.example.vadik.noyify.MyContextWrapper.getCategoryName(MyContextWrapper.java:16) at com.example.vadik.noyify.RecyclerAdapter.<init>(RecyclerAdapter.java:22) at com.example.vadik.noyify.MainActivity.onCreate(MainActivity.java:43) at android.app.Activity.performCreate(Activity.java:5231) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) at android.app.ActivityThread.access$800(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:5001) 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:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method)