我正在尝试使用菜单栏意图活动来启动活动,但应用程序始终崩溃。希望启动ListActivity活动来执行某些任务。尽管ListActivity在单独使用时工作正常(例如,作为应用程序启动时常用的MainActivity),但是当用户单击菜单栏选项时,通过意图在Activity2.class中使用它可能会有问题。但是,其他菜单栏项在单击时可以正常工作。
从MainActivity.class开始
public class MainActivity extends Activity {
// class code goes here ....
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// other options too in switch statement
case R.id.activity2:
MyActivity();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
//code to launch activity
public void MyActivity()
{
Intent intent1 = new Intent(.MainActivity.this, Activity2.class);
startActivity(intent1);
}
}
转到AndroidManifest.xml文件,
//launch ListActivity in Activity2.class when user clicks the Menu Bar option
<activity
android:name=".Activity2"
android:label="@string/title_activity2" >
</activity>
}
现在来自Activity2.class:
import android.app.ListActivity;
public class Activity2 extends ListActivity {
// code goes here
}
来自main.xml文件的exert:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/activity2"
android:orderInCategory="1"
android:showAsAction="never"
android:title="@string/action_act"/>
</menu>
并发出activity_main.xml文件:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".Activity2"
>
<ListView
android:id="@android:id/mylist"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/lists"
android:layout_alignParentTop="true"
android:transcriptMode="alwaysScroll" />
</RelativeLayout>
使用可选的意图过滤器
<activity
android:name=".Activity2"
android:label="@string/title_activity2" >
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
这并没有改善任何事情。
Activity2.class调用onStart()方法等。当文件在更改为Activity2之前用作MainActivity时,这一切都有效:
@Override
public void onStart() {
super.onStart();
}