无法使用显式意图启动活动

时间:2015-06-09 14:58:26

标签: android android-intent

我有Starter ListActivity ,它启动了另外两个:MultitouchAccelerometer
当在 ListActivity 中触及第一个时,它会很好地启动 然而,第二个并没有被证实。
Logcat报告:

06-09 22:42:55.293  12227-12227/com.mainpackage.api E/AndroidRuntime﹕ FATAL EXCEPTION: main
    android.content.ActivityNotFoundException: Unable to find explicit activity class 
{com.mainpackage.api/com.mainpackage.api.Accelerometer}; 
have you declared this activity in your AndroidManifest.xml?

我已阅读相关问题,但他们没有帮助我。
   入门活动:

public class Starter extends ListActivity {

    private String[] tests = { "MultiTouch", "Accelerometer" };

    @Override
    public void onCreate(Bundle saved) {
        super.onCreate(saved);
        ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,tests);
        this.setListAdapter(adapter);

    }

    @Override
    public void onListItemClick(ListView list, View view, int position, long id) {
        super.onListItemClick(list,view,position,id);
        String test = tests[position];
        try {
            Class clazz = Class.forName("com.mainpackage.api."+test);
            Intent i = new Intent(this,clazz);
            startActivity(i);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

清单

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mainpackage.api">

    <application android:allowBackup="true" android:label="@string/app_name"
        android:icon="@mipmap/ic_launcher" android:theme="@style/AppTheme">
        <activity
            android:name=".Starter"
            android:label="@string/app_name"
            >
            <intent-filter>
                <category android:name="android.intent.category.LAUNCHER" />
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MultiTouch"
            android:label="MultiTouch" />
        <activtiy
            android:name=".Accelerometer"
            android:label="Accelerometer" />

    </application>

</manifest>

MultiTouchAccelerometer没有错误。我把它们分开试了。
  有什么想法吗?

1 个答案:

答案 0 :(得分:2)

首先,不要使用Class.forName()。使用ifClass[],只需引用Accelerometer.classMultiTouch.class个对象。

其次,你的清单有:

<activtiy
        android:name=".Accelerometer"
        android:label="Accelerometer" />

元素名称拼写不正确。尝试:

<activity
        android:name=".Accelerometer"
        android:label="Accelerometer" />