我仍然很新,我正在开发我的第一个应用程序。我遇到的问题是这个。
我的启动画面运行正常,但是当它切换到新活动时我一直收到错误。我知道问题出在意图中,但我不知道它是什么或如何解决它。我的代码是:
splashTread = new Thread() {
@Override
public void run() {
try {
synchronized(this){
//wait 5 sec
wait(_splashTime);
}
} catch(InterruptedException e) {}
finally {
finish();
//start a new activity
Intent intent = new Intent(MAIN.this, Home.class);
startActivity(intent);
stop();
并且猫日志是:
02-12 13:01:46.009: D/AndroidRuntime(753): Shutting down VM
02-12 13:01:46.009: W/dalvikvm(753): threadid=1: thread exiting with uncaught exception (group=0x4001e560)
02-12 13:01:46.049: E/AndroidRuntime(753): FATAL EXCEPTION: main
02-12 13:01:46.049: E/AndroidRuntime(753): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.madonk.LAFEST/com.madonk.LAFEST.Home}: java.lang.ClassCastException: android.widget.LinearLayout
02-12 13:01:46.049: E/AndroidRuntime(753): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1702)
02-12 13:01:46.049: E/AndroidRuntime(753): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1722)
02-12 13:01:46.049: E/AndroidRuntime(753): at android.app.ActivityThread.access$1500(ActivityThread.java:124)
02-12 13:01:46.049: E/AndroidRuntime(753): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:974)
02-12 13:01:46.049: E/AndroidRuntime(753): at android.os.Handler.dispatchMessage(Handler.java:99)
02-12 13:01:46.049: E/AndroidRuntime(753): at android.os.Looper.loop(Looper.java:130)
02-12 13:01:46.049: E/AndroidRuntime(753): at android.app.ActivityThread.main(ActivityThread.java:3821)
02-12 13:01:46.049: E/AndroidRuntime(753): at java.lang.reflect.Method.invokeNative(Native Method)
02-12 13:01:46.049: E/AndroidRuntime(753): at java.lang.reflect.Method.invoke(Method.java:507)
02-12 13:01:46.049: E/AndroidRuntime(753): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-12 13:01:46.049: E/AndroidRuntime(753): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-12 13:01:46.049: E/AndroidRuntime(753): at dalvik.system.NativeStart.main(Native Method)
02-12 13:01:46.049: E/AndroidRuntime(753): Caused by: java.lang.ClassCastException: android.widget.LinearLayout
02-12 13:01:46.049: E/AndroidRuntime(753): at android.app.ListActivity.onContentChanged(ListActivity.java:241)
02-12 13:01:46.049: E/AndroidRuntime(753): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:256)
02-12 13:01:46.049: E/AndroidRuntime(753): at android.app.Activity.setContentView(Activity.java:1716)
02-12 13:01:46.049: E/AndroidRuntime(753): at com.madonk.LAFEST.Home.onCreate(Home.java:11)
02-12 13:01:46.049: E/AndroidRuntime(753): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-12 13:01:46.049: E/AndroidRuntime(753): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1666)
02-12 13:01:46.049: E/AndroidRuntime(753): ... 11 more
家庭活动
package com.madonk.LAFEST;
import android.app.ListActivity;
import android.os.Bundle;
public class Home extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
}
}
答案 0 :(得分:1)
似乎你使用ListActivity。 ListActivity的document说
您可以通过设置自己的视图布局来自定义屏幕布局 在onCreate()中使用setContentView()。要做到这一点,你自己的观点必须 包含一个ID为“@android:id / list”的ListView对象(或列出if 它在代码中)
检查项目中的res / layout / home.xml。基于你的例外我相信你把那个id放在你的LinearLayout中,所以将你的“@android:id / list”从LinearLayout移动到ListView 。或发布您的home.xml。
答案 1 :(得分:0)
将其更改为:
Intent intent = new Intent(getBaseContext(), Home.class);
startActivity(intent);
文档说:
Intent(Context packageContext,Class cls)为a创建一个intent 特定组成部分。
您错过了将您的上下文置于意图中。
您可以在此处详细了解Intents:
http://developer.android.com/reference/android/content/Intent.html
在这里:
http://developer.android.com/guide/topics/fundamentals/activities.html
这是关于Intents的一个很好的教程:
你真的应该阅读教程。它帮了我很多!
编辑:您正在调用finish()和stop()。调用finish()将调用你的onDestroy()。当你调用stop()后调用finish()时,我不确定会发生什么。您应该删除对stop()的调用。
答案 2 :(得分:0)
基于以下两行:
02-12 13:01:46.049: E/AndroidRuntime(753): Caused by: java.lang.ClassCastException: android.widget.LinearLayout 02-12
13:01:46.049: E/AndroidRuntime(753): at android.app.ListActivity.onContentChanged(ListActivity.java:241)
我愿意打赌R.layout.home是一个LinearLayout,而不是ListActivity。
同样,这一行特别指向setContentView
电话:
at com.madonk.LAFEST.Home.onCreate(Home.java:11)
答案 3 :(得分:-1)
试试这个: -
Intent intent = new Intent(getActivity(), Home.class);
startActivity(intent);