Skip to main content

Crash when switching to ListView?



I have a normal LinearLayout for my main.xml , and my second activity is a ListView . I have a button on main.xml that should take me to the ListView . I get an Unexpected Error message and have to force close when I press the button.





Main.xml:







<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:weightSum="1"

android:background="@drawable/forzabg">



<ImageView

android:id="@+id/mainlogo"

android:layout_width="210dp"

android:layout_height="119dp"

android:layout_gravity="center"

android:layout_weight="0.00"

android:scaleType="fitXY"

android:src="@drawable/forzalogo" >



</ImageView>



<ImageView

android:id="@+id/menuButton1"

android:layout_width="185dp"

android:layout_height="56dp"

android:layout_gravity="center"

android:layout_weight="0.14"

android:src="@drawable/carslist" />



/>



</LinearLayout>







Java for main.xml:







package com.forza;



import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.ImageView;



public class Forza2Activity extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);



ImageView carbutton = (ImageView) findViewById(R.id.menuButton1);



carbutton.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

Intent myIntent = new Intent(view.getContext(), CarList.class);

startActivity(myIntent);

}

});



}

}







carlist.xml (ListView) activity:







<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">



<ListView

android:id="@+id/mylist"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:entries="@array/Brands" >

</ListView>



</LinearLayout>







Java for ListView activity:







package com.forza;



import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.ImageView;

import android.widget.ListView;





public class CarList extends Activity {







ListView carList = (ListView) findViewById(R.id.mylist);

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.carlist);



ImageView carbutton = (ImageView) findViewById(R.id.menuButton1);



carbutton.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

Intent intent = new Intent();

setResult(RESULT_OK, intent);

finish();

};

});

}

}







LogCat:







02-26 16:35:50.158: W/dalvikvm(341): threadid=3: thread exiting with uncaught exception (group=0x4001b188)

02-26 16:35:50.158: E/AndroidRuntime(341): Uncaught handler: thread main exiting due to uncaught exception

02-26 16:35:50.168: E/AndroidRuntime(341): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.forza/com.forza.CarList}: java.lang.NullPointerException

02-26 16:35:50.168: E/AndroidRuntime(341): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)

02-26 16:35:50.168: E/AndroidRuntime(341): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)

02-26 16:35:50.168: E/AndroidRuntime(341): at android.app.ActivityThread.access$2200(ActivityThread.java:119)

02-26 16:35:50.168: E/AndroidRuntime(341): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)

02-26 16:35:50.168: E/AndroidRuntime(341): at android.os.Handler.dispatchMessage(Handler.java:99)

02-26 16:35:50.168: E/AndroidRuntime(341): at android.os.Looper.loop(Looper.java:123)

02-26 16:35:50.168: E/AndroidRuntime(341): at android.app.ActivityThread.main(ActivityThread.java:4363)

02-26 16:35:50.168: E/AndroidRuntime(341): at java.lang.reflect.Method.invokeNative(Native Method)

02-26 16:35:50.168: E/AndroidRuntime(341): at java.lang.reflect.Method.invoke(Method.java:521)

02-26 16:35:50.168: E/AndroidRuntime(341): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)

02-26 16:35:50.168: E/AndroidRuntime(341): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

02-26 16:35:50.168: E/AndroidRuntime(341): at dalvik.system.NativeStart.main(Native Method)

02-26 16:35:50.168: E/AndroidRuntime(341): Caused by: java.lang.NullPointerException

02-26 16:35:50.168: E/AndroidRuntime(341): at android.app.Activity.findViewById(Activity.java:1612)

02-26 16:35:50.168: E/AndroidRuntime(341): at com.forza.CarList.<init>(CarList.java:15)

02-26 16:35:50.168: E/AndroidRuntime(341): at java.lang.Class.newInstanceImpl(Native Method)

02-26 16:35:50.168: E/AndroidRuntime(341): at java.lang.Class.newInstance(Class.java:1479)

02-26 16:35:50.168: E/AndroidRuntime(341): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)

02-26 16:35:50.168: E/AndroidRuntime(341): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2409)

02-26 16:35:50.168: E/AndroidRuntime(341): ... 11 more

02-26 16:35:50.178: I/dalvikvm(341): threadid=7: reacting to signal 3

02-26 16:35:50.178: E/dalvikvm(341): Unable to open stack trace file '/data/anr/traces.txt': Permission denied

02-26 16:35:53.198: I/Process(341): Sending signal. PID: 341 SIG: 9

02-26 16:35:53.608: D/dalvikvm(348): GC freed 611 objects / 48680 bytes in 58ms

02-26 16:35:54.258: D/dalvikvm(348): GC freed 59 objects / 2336 bytes in 50ms







Is it even possible to go from a regular view to a ListView?


Comments

  1. The key line in the log is this :

    02-26 16:35:50.168: E/AndroidRuntime(341): Caused by: java.lang.NullPointerException
    02-26 16:35:50.168: E/AndroidRuntime(341): at android.app.Activity.findViewById(Activity.java:1612)


    You are getting a null pointer exception trying to find some view.

    I suspect this is your line 1612:

    ListView carList = (ListView) findViewById(R.id.mylist);


    This should be inside your onCreate() because at that point (where it is now) it wonT have been initilized yet.




    Is it even possible to go from a regular view to a ListView?


    It sure is. But in case you donT know about it already, I also suggest you should check the ListActivity which would allow easy handling of the entire list data and events on the items of your CarList.



    EDIT Missing button in the carlist.xml

    As you set your ContentView as the carlist.xml with the line

    setContentView(R.layout.carlist);


    You need to have a matching ImageView called menuButton1 in the carlist.xml, otherwise you ll get an error in the following call:

    ImageView carbutton = (ImageView) findViewById(R.id.menuButton1);


    To avoid the error, just add a new ImageView button in the carlist.xml (this time call it something else, not menuButton1)

    ReplyDelete

Post a Comment

Popular posts from this blog

[韓日関係] 首相含む大幅な内閣改造の可能性…早ければ来月10日ごろ=韓国

div not scrolling properly with slimScroll plugin

I am using the slimScroll plugin for jQuery by Piotr Rochala Which is a great plugin for nice scrollbars on most browsers but I am stuck because I am using it for a chat box and whenever the user appends new text to the boxit does scroll using the .scrollTop() method however the plugin's scrollbar doesnt scroll with it and when the user wants to look though the chat history it will start scrolling from near the top. I have made a quick demo of my situation http://jsfiddle.net/DY9CT/2/ Does anyone know how to solve this problem?

Why does this javascript based printing cause Safari to refresh the page?

The page I am working on has a javascript function executed to print parts of the page. For some reason, printing in Safari, causes the window to somehow update. I say somehow, because it does not really refresh as in reload the page, but rather it starts the "rendering" of the page from start, i.e. scroll to top, flash animations start from 0, and so forth. The effect is reproduced by this fiddle: http://jsfiddle.net/fYmnB/ Clicking the print button and finishing or cancelling a print in Safari causes the screen to "go white" for a sec, which in my real website manifests itself as something "like" a reload. While running print button with, let's say, Firefox, just opens and closes the print dialogue without affecting the fiddle page in any way. Is there something with my way of calling the browsers print method that causes this, or how can it be explained - and preferably, avoided? P.S.: On my real site the same occurs with Chrome. In the ex