1

My app is crashing. I have errors and I just got done debugging and as the title says thats the problem.

While debugging I found the line that is causing the problem:

listView.setAdapter(arrayAdapter2);

Towards the bottom. I had a similar nullpointerException before here. This time it is different as I am declaring my arrayadapter in the right area. In debugging the result that goes into the array adapter is not NULL.

I have searched the forum and found these:

Why am I getting an InvocationTargetException? Android 2D game

another nullpointerexception

These NullPointerExceptions seem pretty common in android but they are pretty code specific.

In reading the other information correct me if I am wrong the only place the null can be is if the arrayAdapter2 is NULL.

public class ByZipcode extends Activity{ 
Button btngetLObyzipcode;
Spinner spinner1;
ProgressBar progressBar1;
EditText textinput4byzip;
UserFunctions userFunctions  = new UserFunctions();
ArrayAdapter<String> arrayAdapter2;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.byzipcodepage);
    arrayAdapter2 = new ArrayAdapter<String>(ByZipcode.this,android.R.layout.simple_list_item_1);

    // Initializing spinner with predetermined results
    spinner1 = (Spinner) findViewById(R.id.spinner1);
    progressBar1 = (ProgressBar) findViewById(R.id.progressBar1);
    textinput4byzip = (EditText) findViewById(R.id.textinput4byzip);
    ArrayAdapter<CharSequence> spinnerAdapter = ArrayAdapter.createFromResource(this,
            R.array.byzipspinner, android.R.layout.simple_spinner_item);
    spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner1.setAdapter(spinnerAdapter);


    btngetLObyzipcode = (Button) findViewById(R.id.btngetLObyzipcode);
    btngetLObyzipcode.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            if (textinput4byzip.getText() != null & textinput4byzip.getText().toString().length() == 5 ){
                progressBar1.setVisibility(View.VISIBLE);
                new DownloadDataTask().execute();
                }
            }
    });

}



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main_screen, menu);
    return true;
}

private class DownloadDataTask extends AsyncTask<JSONArray, JSONArray, ArrayList<String> > {


        @Override
        protected ArrayList<String> doInBackground(JSONArray... params) {
            String spinValue = spinner1.getSelectedItem().toString();
            //if(textinput4byzip.getText() != null)
            JSONArray json = userFunctions.getCustomerbyZipCode((textinput4byzip.getText().toString()), spinValue);
            ArrayList<String> customers = new ArrayList<String>();
            for(int i=0; i < json.length() ; i++) {
                JSONObject jarray;
                try {
                    jarray = json.getJSONObject(i);
                    String zip = jarray.getString("CustomerName");
                    customers.add(zip);
                    Log.d(zip,"Output");
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            return customers;
        }   
        protected void onPostExecute(ArrayList<String> result){
            ListView listView = (ListView) findViewById(R.id.listView1);
            arrayAdapter2.addAll(result);
            listView.setAdapter(arrayAdapter2);
            progressBar1.setVisibility(View.GONE);
            Intent viewCustomers = new Intent(getApplicationContext(), StoreListView.class);
            viewCustomers.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(viewCustomers);
        }
 }

}

Just in case you are interested the failure is below:

02-10 17:39:36.976: E/AndroidRuntime(7686): FATAL EXCEPTION: main
02-10 17:39:36.976: E/AndroidRuntime(7686): java.lang.NullPointerException
02-10 17:39:36.976: E/AndroidRuntime(7686):     at     com.example.lo.ByZipcode$DownloadDataTask.onPostExecute(ByZipcode.java:93)
02-10 17:39:36.976: E/AndroidRuntime(7686):     at com.example.lo.ByZipcode$DownloadDataTask.onPostExecute(ByZipcode.java:1)
02-10 17:39:36.976: E/AndroidRuntime(7686):     at android.os.AsyncTask.finish(AsyncTask.java:631)
02-10 17:39:36.976: E/AndroidRuntime(7686):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
02-10 17:39:36.976: E/AndroidRuntime(7686):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
02-10 17:39:36.976: E/AndroidRuntime(7686):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-10 17:39:36.976: E/AndroidRuntime(7686):     at android.os.Looper.loop(Looper.java:137)
02-10 17:39:36.976: E/AndroidRuntime(7686):     at android.app.ActivityThread.main(ActivityThread.java:5039)
02-10 17:39:36.976: E/AndroidRuntime(7686):     at java.lang.reflect.Method.invokeNative(Native Method)
02-10 17:39:36.976: E/AndroidRuntime(7686):     at java.lang.reflect.Method.invoke(Method.java:511)
02-10 17:39:36.976: E/AndroidRuntime(7686):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-10 17:39:36.976: E/AndroidRuntime(7686):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-10 17:39:36.976: E/AndroidRuntime(7686):     at dalvik.system.NativeStart.main(Native Method)

As requested the xml page for the above activity:

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

<EditText
    android:id="@+id/textinput4byzip"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal|center_vertical"
    android:contentDescription="@string/zipcodefielddescription"
    android:ems="10"
    android:gravity="center_vertical|center_horizontal"
    android:inputType="number"
    android:maxLength="@integer/zipcodelength"
    android:textSize="@dimen/LargeFont" >

    <requestFocus />
</EditText>

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical|center_horizontal"
    android:text="@string/entrzip"
    android:textAlignment="center"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textSize="@dimen/MediumFont" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center_vertical|center_horizontal"
    android:orientation="vertical"
    android:paddingLeft="@dimen/MediumFont"
    android:paddingTop="@dimen/MediumFont" >

    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="285dp"
        android:layout_height="308dp"
        android:layout_gravity="center_horizontal|center_vertical"
        android:visibility="gone" />

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal|center_vertical"
        android:entries="@array/byzipspinner"
        android:textAlignment="center" />

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="@string/restaurants"
        android:textSize="@dimen/LargeFont" />

    <CheckBox
        android:id="@+id/checkBox2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="CheckBox"
        android:textSize="@dimen/LargeFont" />

    <CheckBox
        android:id="@+id/checkBox3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="CheckBox"
        android:textSize="@dimen/LargeFont" />

    <CheckBox
        android:id="@+id/checkBox4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="CheckBox"
        android:textSize="@dimen/LargeFont" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_vertical|center_horizontal"
        android:orientation="vertical"
        android:paddingRight="@dimen/MediumFont" >

        <Button
            android:id="@+id/btngetLObyzipcode"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/getlo"
            android:textSize="@dimen/LargeFont" />

    </LinearLayout>

</LinearLayout>

Community
  • 1
  • 1
Mark
  • 911
  • 13
  • 30
  • 1
    "These NullPointerExceptions seem pretty common in android but they are pretty code specific." NullPointerExceptions are only caused by an error in your code. Nothing to do with Android. "In reading the other information correct me if I am wrong the only place the null can be is if the arrayAdapter2 is NULL." Wrong. listView could be null also. NPE is simply an exception caused when you try to access an object you haven't initialised. Put a breakpoint on that line and see which one is null. You should also initialise your listView in onCreate(), not onPostExecute() – Simon Feb 10 '13 at 17:44
  • Can you edit your post to show `byzipcodepage.xml`? – Cat Feb 10 '13 at 17:44
  • I added the xml page. I will check the breakpoint now Simon – Mark Feb 10 '13 at 17:48
  • listView is NULL and then when I step into it goes right to the exception. I am going to move `ListView listView = (ListView) findViewById(R.id.listView1);` to oncreate and test. – Mark Feb 10 '13 at 17:59

1 Answers1

3
ListView listView = (ListView) findViewById(R.id.listView1);

You're looking in byzipcodepage.xml for a ListView with ID listView1. No such view exists; in fact, there is no ListView in that layout at all.

If you want a list in that view (for the adapter to use), you need to add it; if your ListView is within a different activity, you may need to handle this entire situation a bit differently to pass the data from this activity to that one (perhaps through a Bundle).

Cat
  • 66,919
  • 24
  • 133
  • 141
  • you are 100% correct it is definitely in a different view. It is on the next page after clicking the button. I guess I have no other choice either because either way I have to pass information, whether it is these results or the select answers before the button is pressed. If you know of any tutorial on passing data would surely appreciate it. Thanks for the answer! – Mark Feb 10 '13 at 18:06
  • @Mark You can [use a `Bundle` passed into your `Intent`](http://stackoverflow.com/q/768969/1438733), then use [`.putStringArray()`](http://developer.android.com/reference/android/os/Bundle.html#putStringArray(java.lang.String,%20java.lang.String[])) to pass an array of `String`s (from the `List` which you currently use in your adapter) to the next `Activity`, which [can then retrieve it](http://stackoverflow.com/q/4233873/1438733). – Cat Feb 10 '13 at 18:10
  • 2
    wow that sounds easy. I like it when people put it in layman terms. I will give it a go. It's Sunday my programming day. – Mark Feb 10 '13 at 18:13
  • @Mark Good luck! If you get stuck, feel free to start another question. :) – Cat Feb 10 '13 at 18:13