Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
757 views
in Technique[技术] by (71.8m points)

android - ArrayAdapter.createViewFromResource(int, View, ViewGroup, int) line: 355 NullPointerException

I'm setting an ArrayAdapter and I get the following error:

 Thread [<1> main] (Suspended (exception NullPointerException)) 
ArrayAdapter.createViewFromResource(int, View, ViewGroup, int) line: 355    
ArrayAdapter.getView(int, View, ViewGroup) line: 323    
ListView(AbsListView).obtainView(int, boolean[]) line: 1294 
ListView.measureHeightOfChildren(int, int, int, int, int) line: 1198    

My symptomremedyActivity.java looks like:

    setContentView(R.layout.symptomremedy);
    ListView remedyList = (ListView) findViewById(R.id.ListView_SymptomRemedy);
    remedyList.setTextFilterEnabled(true);
    ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, R.layout.menu_item, remedyArray);
    remedyList.setAdapter(adapt);

and my symptomremedy.xml layout looks like:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/Button_BACK"
android:layout_width="wrap_content"
android:layout_height="@dimen/menu_button_height"
android:layout_alignTop="@+id/Button_BACK"
android:layout_below="@+id/ImageView_MenuHeader"
android:textSize="@dimen/menu_button_text_size"
android:text="@string/back"></Button>

<ListView
        android:layout_height="wrap_content"
        android:id="@+id/ListView_SymptomRemedy"
        android:layout_width="fill_parent"
        android:background="@color/menu_white"
        android:divider="@drawable/straight_divider"
        android:listSelector="@drawable/textured"
        android:layout_alignParentTop="true"></ListView>

</LinearLayout>

and menu_item.xml layout looks like:

<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:textSize="@dimen/menu_item_size"
android:text="test string"
android:textColor="@color/menu_black"
android:layout_height="fill_parent"
 />

I've done something similar in other Activities with no problems, so I can't figure out why there is a problem here. All of the fields involved are non-null, i.e. remedyArray, etc. Anyone have any idea what the problem is?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Turns out the problem was in the way I was creating the array for the ArrayAdapter. Previously the code I had was:

String remedyArray[] = new String[30];

When I changed the code to:

    String remedyArray[] = new String[30];
    for ( int i = 0; i< 30; i++){
            remedyArray[i] = "";
    }

everything worked. I don't completely understand why, but it appeared that initializing the array with values did the trick. I guess one of the uniquenesses of Java is that when an array is created, the entries contain null, and I think it was those null values that were causing the problem.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...