NullPointerException与setAdapter-尝试设置数组适配器 [英] NullPointerException with setAdapter - Trying to set array adapter

查看:88
本文介绍了NullPointerException与setAdapter-尝试设置数组适配器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试设置阵列适配器,并具有以下代码:

I am trying to set array adapter and have following code in place:

private String[] mServices;
private ListView mDrawerList;
//Ends Here

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //For Navigation Drawer
    mServices = getResources().getStringArray(R.array.drawer_services);
    mDrawerList = (ListView) findViewById (R.id.left_drawer);

    mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, mServices));

我试图设置适配器的最后一行代码,我得到了NullPointerException.如果我尝试导航到包含此代码的页面,则该应用程序将崩溃.

The last line of code where I am trying to set Adapter, I get a NullPointerException. The app crashes if I try to navigate to page containing this code.

有指针吗?

这是调试:

07-08 20:05:22.885: E/AndroidRuntime(2351): FATAL EXCEPTION: main 07-08 20:05:22.885: E/AndroidRuntime(2351): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.parrot.urlripper/com.parrot.urlripper.google}: java.lang.NullPointerException 07-08 20:05:22.885: E/AndroidRuntime(2351): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 07-08 20:05:22.885: E/AndroidRuntime(2351): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 07-08 20:05:22.885: E/AndroidRuntime(2351): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 07-08 20:05:22.885: E/AndroidRuntime(2351): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 07-08 20:05:22.885: E/AndroidRuntime(2351): at android.os.Handler.dispatchMessage(Handler.java:99) 07-08 20:05:22.885: E/AndroidRuntime(2351): at android.os.Looper.loop(Looper.java:123) 07-08 20:05:22.885: E/AndroidRuntime(2351): at android.app.ActivityThread.main(ActivityThread.java:3683) 07-08 20:05:22.885: E/AndroidRuntime(2351): at java.lang.reflect.Method.invokeNative(Native Method) 07-08 20:05:22.885: E/AndroidRuntime(2351): at java.lang.reflect.Method.invoke(Method.java:507) 07-08 20:05:22.885: E/AndroidRuntime(2351): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 07-08 20:05:22.885: E/AndroidRuntime(2351): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 07-08 20:05:22.885: E/AndroidRuntime(2351): at dalvik.system.NativeStart.main(Native Method) 07-08 20:05:22.885: E/AndroidRuntime(2351): Caused by: java.lang.NullPointerException 07-08 20:05:22.885: E/AndroidRuntime(2351): at com.parrot.urlripper.google.onCreate(google.java:35) 07-08 20:05:22.885: E/AndroidRuntime(2351): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 07-08 20:05:22.885: E/AndroidRuntime(2351): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)

07-08 20:05:22.885: E/AndroidRuntime(2351): FATAL EXCEPTION: main 07-08 20:05:22.885: E/AndroidRuntime(2351): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.parrot.urlripper/com.parrot.urlripper.google}: java.lang.NullPointerException 07-08 20:05:22.885: E/AndroidRuntime(2351): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 07-08 20:05:22.885: E/AndroidRuntime(2351): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 07-08 20:05:22.885: E/AndroidRuntime(2351): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 07-08 20:05:22.885: E/AndroidRuntime(2351): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 07-08 20:05:22.885: E/AndroidRuntime(2351): at android.os.Handler.dispatchMessage(Handler.java:99) 07-08 20:05:22.885: E/AndroidRuntime(2351): at android.os.Looper.loop(Looper.java:123) 07-08 20:05:22.885: E/AndroidRuntime(2351): at android.app.ActivityThread.main(ActivityThread.java:3683) 07-08 20:05:22.885: E/AndroidRuntime(2351): at java.lang.reflect.Method.invokeNative(Native Method) 07-08 20:05:22.885: E/AndroidRuntime(2351): at java.lang.reflect.Method.invoke(Method.java:507) 07-08 20:05:22.885: E/AndroidRuntime(2351): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 07-08 20:05:22.885: E/AndroidRuntime(2351): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 07-08 20:05:22.885: E/AndroidRuntime(2351): at dalvik.system.NativeStart.main(Native Method) 07-08 20:05:22.885: E/AndroidRuntime(2351): Caused by: java.lang.NullPointerException 07-08 20:05:22.885: E/AndroidRuntime(2351): at com.parrot.urlripper.google.onCreate(google.java:35) 07-08 20:05:22.885: E/AndroidRuntime(2351): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 07-08 20:05:22.885: E/AndroidRuntime(2351): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)

推荐答案

在ArrayAdapter的构造函数中,您必须按照Android文档中的说明传递TextView ID: ArrayAdapter

In your constructor of ArrayAdapter, you have to pass a TextView id as described in the Android documentation : ArrayAdapter

Internet上有一些与此主题有关的教程,例如: ArrayAdapter基本教程

There is some tutorial on internet about this subject, for example this one : ArrayAdapter basic tutorial

您的问题也可能来自mServices,它可以为空.

And your problem could also come from the mServices which can be null.

以下代码对我有用:

活动:

public class MainActivity extends Activity {

    private String[] mServices = new String[] {"Test1", "Test2", "Test3", "Test4"};
    private ListView mDrawerList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mDrawerList = (ListView) findViewById(R.id.left_drawer);
        mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.text_view, mServices));
    }
}

activity_main.xml文件:

The activity_main.xml file :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ListView
        android:id="@+id/left_drawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:drawSelectorOnTop="false"
        android:choiceMode="multipleChoice"
    />
</LinearLayout>

还有text_view.xml文件:

And the text_view.xml file:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="15dp"
    android:textColor="@android:color/black"
    android:textStyle="italic">
</TextView>

这篇关于NullPointerException与setAdapter-尝试设置数组适配器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆