我有Starter
ListActivity ,它启动了另外两个:Multitouch
和Accelerometer
。
当在 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>
MultiTouch
和Accelerometer
没有错误。我把它们分开试了。
有什么想法吗?
答案 0 :(得分:2)
首先,不要使用Class.forName()
。使用if
或Class[]
,只需引用Accelerometer.class
和MultiTouch.class
个对象。
其次,你的清单有:
<activtiy
android:name=".Accelerometer"
android:label="Accelerometer" />
元素名称拼写不正确。尝试:
<activity
android:name=".Accelerometer"
android:label="Accelerometer" />