切换到ListView时崩溃?
问题描述:
我有一个正常的LinearLayout
我main.xml
,我的第二个活动是ListView
。我有一个main.xml
的按钮,应该带我到ListView
。我收到一个Unexpected Error message
,并且在按下按钮时必须强行关闭。切换到ListView时崩溃?
的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进行的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控件)活动:
<?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进行的ListView活动:
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
它甚至有可能从常规视图到ListView去?
答
在log
重点线是这样的:
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)
你得到一个null pointer exception
试图找到一些视图。
我怀疑这是你的行1612
:
ListView carList = (ListView) findViewById(R.id.mylist);
这应该是内您onCreate()
,因为在这一点(它现在是)它不会有尚未initilized。
它甚至有可能从一个普通视图到ListView去?
这肯定是。但是,如果您不知道它,我还建议您检查ListActivity,以便您轻松处理CarList
项目上的整个列表数据和事件。
编辑缺少在carlist.xml
按钮,当您设置内容查看为carlist.xml
与线
setContentView(R.layout.carlist);
你需要有一个匹配的ImageView
称为menuButton1在carlist.xml
,否则你会得到一个在下面的调用n错误:
ImageView carbutton = (ImageView) findViewById(R.id.menuButton1);
要避免错误,只是在carlist.xml
添加新ImageView
按钮(这个时间打电话别的东西,不是menuButton1)
同意。另外,carlist xml中没有menubutton1。 – ABentSpoon 2012-02-26 22:55:18
是的,我想知道这是否因为简洁省略? @Cole – 2012-02-26 22:56:49
@ABentSpoon这可能是老,但我以下[此](http://www.warriorpoint.com/blog/2009/05/24/android-how-to-switch-between-activities/)教程关于交换活动。它在Activity2中引用Activity1中的按钮,所以我想这就是我必须做的。我对Android相当陌生。仍在学习!我不需要第二个活动的Java代码中的那部分代码? – Cole 2012-02-26 23:06:53