簡體   English   中英

如何使用菜單從listactivity切換到活動

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM