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?
The key line in the
logis this :You are getting a
null pointer exceptiontrying to find some view.I suspect this is your line
1612:This should be inside your
onCreate()because at that point (where it is now) it wonT have been initilized yet.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.xmlAs you set your ContentView as the
carlist.xmlwith the lineYou need to have a matching
ImageViewcalled menuButton1 in thecarlist.xml, otherwise you ll get an error in the following call:To avoid the error, just add a new
ImageViewbutton in thecarlist.xml(this time call it something else, not menuButton1)