启动一个新的Activity但我得到一个ActivityNotFoundException

时间:2012-01-04 12:33:35

标签: android android-activity android-intent

好的..当我将手机插入电脑时,它会启动应用程序,睡眠()完成后会崩溃并显示底部显示的错误。我认为你需要的所有代码都显示在引文中。

真的很困惑我为什么会遇到这个问题。我的mainActivity.java文件看起来像这样:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
Thread timer = new Thread(){
        public void run(){
            try{
                sleep(1000);
            } catch (InterruptedException e){
                e.printStackTrace();
            }finally{
                Intent intent = new             Intent("com.worcestershire.android.Pagetwo", null);
                startActivity(intent);
            }
        }
    };
    timer.start();}

第2页看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" 
android:background="@raw/logo"
>

   <TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#000000"
android:text="This is Activity 2" />

   <Button android:text="Previous"
    android:id="@+id/Button02"
    android:layout_width="250px"
        android:textSize="18px"
    android:layout_height="55px">
</Button> 


</LinearLayout>

我的清单看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.worcestershire.android"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="7" />

<application
    android:icon="@drawable/maps_launcher"
    android:label="@string/app_name" >
    <activity
        android:name="com.worcestershire.android.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".PAGETWO"
        android:label="@string/app_name" >

    </activity>


</application>

</manifest>

继承日志:

01-04 12:27:05.711: W/dalvikvm(25483): threadid=9: thread exiting with uncaught      exception (group=0x4001d5a0)
01-04 12:27:05.711: E/AndroidRuntime(25483): FATAL EXCEPTION: Thread-10
01-04 12:27:05.711: E/AndroidRuntime(25483): android.content.ActivityNotFoundException:  No  
Activity found to handle Intent { act=com.worcestershire.android.Pagetwo }
01-04 12:27:05.711: E/AndroidRuntime(25483):    at  android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1569)
01-04 12:27:05.711: E/AndroidRuntime(25483):    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1539)
01-04 12:27:05.711: E/AndroidRuntime(25483):    at android.app.Activity.startActivityForResult(Activity.java:2901)
01-04 12:27:05.711: E/AndroidRuntime(25483):    at  android.app.Activity.startActivity(Activity.java:3007)
01-04 12:27:05.711: E/AndroidRuntime(25483):    at  com.worcestershire.android.MainActivity$1.run(MainActivity.java:43)

任何帮助都将有用。干杯!

5 个答案:

答案 0 :(得分:5)

您在Manifest中的活动名称应与您呼叫时的活动名称完全相同。如果活动类名为Pagetwo,则android:name=".Pagetwo"属性应该在您的清单中。希望这会有所帮助。

答案 1 :(得分:1)

我认为您需要在清单中使用包指定活动名称。

答案 2 :(得分:1)

请在清单文件中添加Page2活动,并在mainActivity中使用以下代码

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
Thread timer = new Thread(){
        public void run(){
            try{
                sleep(1000);
            } catch (InterruptedException e){
                e.printStackTrace();
            }finally{
                Intent intent = new             Intent(MainActivity.this, Page2.class);
                startActivity(intent);
            }
        }
    };
    timer.start();}

答案 3 :(得分:0)

这就是问题......

  

找不到处理Intent的Activity {   act = com.worcestershire.android.Pagetwo}

您可能会收到此错误,因为您尚未将该类添加为清单中的活动。有关详细信息,请查看此处:Using Intent in an Android application to show another activity

你的意图也错了。你希望它看起来像这样:

new Intent(CurrentActivity.this, NextActivity.class);

CurrentActivityNextActivity分别是您所在的活动类别的名称。

答案 4 :(得分:0)

你不需要在声明活动时重复你的整个包,只有.ActivityName可以工作

 Intent intent = new  Intent(this, NextActivityTobeCalled.class);
 startActivity(intent);