[英]how to switch to activity from listactivity using menu
我的初始屏幕基本上來自顯示記錄列表的listactivity。 我創建了一個菜單,該菜單應打開一個新的輸入窗口,但單擊該菜單時始終強制關閉。 以下是我的代碼:
Guestbook.java (ListActivity)
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.mnuNew:
//setContentView(R.layout.form);
Intent mIntent = new Intent(getApplicationContext(), Maintenance.class);
startActivityForResult(mIntent, 0);
//Toast.makeText(getApplicationContext(), "Test", Toast.LENGTH_SHORT).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
這是Maintenance.class的代碼
package com.android.guestbook;
import android.app.Activity;
import android.os.Bundle;
public class Maintenance extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.form);
}
}
是有什么錯我的代碼?
這是logcat信息。
02-06 07:02:29.617: INFO/ActivityManager(59): Starting activity: Intent { cmp=com.android.guestbook/.Maintenance }
02-06 07:02:29.956: DEBUG/AndroidRuntime(276): Shutting down VM
02-06 07:02:29.956: WARN/dalvikvm(276): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): FATAL EXCEPTION: main
02-06 07:02:30.107: ERROR/AndroidRuntime(276): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.guestbook/com.android.guestbook.Maintenance}: java.lang.RuntimeException: Binary XML file line #82: You must supply a layout_width attribute.
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.os.Handler.dispatchMessage(Handler.java:99)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.os.Looper.loop(Looper.java:123)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.app.ActivityThread.main(ActivityThread.java:4627)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at java.lang.reflect.Method.invokeNative(Native Method)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at java.lang.reflect.Method.invoke(Method.java:521)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at dalvik.system.NativeStart.main(Native Method)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): Caused by: java.lang.RuntimeException: Binary XML file line #82: You must supply a layout_width attribute.
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:491)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:3592)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.view.ViewGroup$MarginLayoutParams.<init>(ViewGroup.java:3672)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.widget.LinearLayout$LayoutParams.<init>(LinearLayout.java:1395)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:1321)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:45)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.view.LayoutInflater.rInflate(LayoutInflater.java:620)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.app.Activity.setContentView(Activity.java:1647)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at com.android.guestbook.Maintenance.onCreate(Maintenance.java:11)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
02-06 07:02:30.107: ERROR/AndroidRuntime(276): ... 11 more
02-06 07:02:30.216: WARN/ActivityManager(59): Force finishing activity com.android.guestbook/.Maintenance
02-06 07:02:30.267: WARN/ActivityManager(59): Force finishing activity com.android.guestbook/.GuestBook
這是我的Maintenance類的form.xml。
> <?xml version="1.0" encoding="utf-8"?>
> <LinearLayout
> xmlns:android="http://schemas.android.com/apk/res/android"
> android:layout_width="fill_parent"
> android:layout_height="fill_parent"
> android:orientation="vertical">
> <LinearLayout
> android:layout_height="wrap_content"
> android:layout_width="fill_parent">
> <TextView
> android:layout_width="fill_parent"
> android:layout_height="wrap_content"
> android:text="@string/name" />
> </LinearLayout>
> <LinearLayout
> android:layout_height="wrap_content"
> android:layout_width="fill_parent">
> <EditText
> android:inputType="textPersonName"
> android:layout_width="fill_parent"
> android:layout_height="wrap_content"
> android:id="@+id/name"
> android:hint="Enter your name here" />
> </LinearLayout>
> <LinearLayout
> android:layout_height="wrap_content"
> android:layout_width="fill_parent">
> <TextView
> android:layout_width="wrap_content"
> android:layout_height="wrap_content"
> android:text="@string/email" />
> </LinearLayout>
> <LinearLayout
> android:layout_height="wrap_content"
> android:layout_width="fill_parent">
> <EditText
> android:inputType="textEmailAddress"
> android:layout_width="fill_parent"
> android:layout_height="wrap_content"
> android:id="@+id/email"
> android:hint="Enter your email here" />
> </LinearLayout>
> <LinearLayout
> android:layout_height="wrap_content"
> android:layout_width="fill_parent">
> <TextView
> android:layout_width="wrap_content"
> android:layout_height="wrap_content"
> android:text="@string/message" />
> </LinearLayout>
> <LinearLayout
> android:layout_height="wrap_content"
> android:layout_width="fill_parent">
> <EditText
> android:inputType="textMultiLine"
> android:layout_width="fill_parent"
> android:layout_height="wrap_content"
> android:id="@+id/message"
> android:hint="Enter your message here"></EditText>
> </LinearLayout>
> <LinearLayout
> android:layout_height="wrap_content"
> android:layout_width="fill_parent">
> <Button
> android:onClick="onClick"
> android:layout_weight="1"
> android:layout_width="fill_parent"
> android:layout_height="wrap_content"
> android:id="@+id/submit"
> android:text="@string/submit" />
> <Button
> android:onClick="onClick"
> android:layout_weight="1"
> android:layout_width="fill_parent"
> android:layout_height="wrap_content"
> android:id="@+id/cancel"
> android:text="@string/cancel" />
> </LinearLayout>
> <ListView
> android:id="@+id/list" /> </LinearLayout>
您是否在清單文件中聲明了Maintenance.class-活動?!
您需要將<activity>
-Tag放置在AndroidManifest.xml
的<application>
-Tag之間:
<application android:label="@string/app_name" android:icon="@drawable/icon" android:debuggable="true">
<activity android:name=".activities.Guestbook"
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=".activities.Maintenance "
android:label="@string/app_name">
</activity>
</application>
多虧了您的所有幫助,我終於弄明白了出什么問題了。 檢查日志貓說它關於我的xml布局的layout_width的一些問題。 所以然后我檢查了xml,發現我有一個沒有任何layout_width屬性的listview。 一旦我摘下它就開始工作。
再次感謝。
一個錯誤是在form.xml的82行聲明了ListView小部件的兩個參數。
android:layout_height=
android:layout_width=
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.