¿Cómo abrir nueva visión (llamar a una actividad) en el menú de opciones se definen en XML? (androide)

StackOverflow https://stackoverflow.com/questions/2010701

  •  18-09-2019
  •  | 
  •  

Pregunta

Me parece que no puede abrir una nueva vista de un elemento de menú Opciones. El programa sigue fallando en que se aplica la intención y el oyente al elemento. Me estoy empezando, así que por favor sea agradable.

La opinión actual es mnfsms, y la vista Estoy intentando abrir es mnfsms_settings. Estoy desarrollando durante 1,5.

Podría alguien por favor me ayude a conseguir el menú de trabajo.

El menú (llamado options_menu.xml):

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/settings_button"
          android:title="Settings"
          android:icon="@android:drawable/ic_menu_preferences" />
    <item android:id="@+id/about_button"
          android:title="About"
          android:icon="@android:drawable/ic_menu_myplaces" />
</menu>

La vista principal (llamado mnfsms.java):

package com.example.mnfsms;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

public class mnfsms extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    /*        OnClickListener myocl = new View.OnClickListener() {
 public void onClick(View v){
  Intent myi = new Intent(mnfsms.this, mnfsms_settings.class);
  startActivity(myi);
 }
};*/    
}

public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);

    MenuItem mi_settings = (MenuItem)findViewById(R.id.settings_button);
    mi_settings.setIntent(new Intent(this, mnfsms_settings.class));

    return true;
}
}

El manifiesto:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.mnfsms"
          android:versionCode="1"
          android:versionName="1.0">
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".mnfsms" android:label="@string/main_window_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
      <activity android:name=".mnfsms_settings" android:label="string/main_window_name">
            </activity>
        </application>
        <uses-sdk android:minSdkVersion="3" />
</manifest>

El StackTrace:

01-06 15:07:58.045: ERROR/AndroidRuntime(2123): Uncaught handler: thread main exiting due to uncaught exception
01-06 15:07:58.055: ERROR/AndroidRuntime(2123): java.lang.NullPointerException
01-06 15:07:58.055: ERROR/AndroidRuntime(2123):     at com.example.mnfsms.mnfsms.onCreateOptionsMenu(mnfsms.java:30)
01-06 15:07:58.055: ERROR/AndroidRuntime(2123):     at android.app.Activity.onCreatePanelMenu(Activity.java:2038)
01-06 15:07:58.055: ERROR/AndroidRuntime(2123):     at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:421)
01-06 15:07:58.055: ERROR/AndroidRuntime(2123):     at com.android.internal.policy.impl.PhoneWindow.onKeyDownPanel(PhoneWindow.java:664)
01-06 15:07:58.055: ERROR/AndroidRuntime(2123):     at com.android.internal.policy.impl.PhoneWindow.onKeyDown(PhoneWindow.java:1278)
01-06 15:07:58.055: ERROR/AndroidRuntime(2123):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1735)
01-06 15:07:58.055: ERROR/AndroidRuntime(2123):     at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2188)
01-06 15:07:58.055: ERROR/AndroidRuntime(2123):     at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2158)
01-06 15:07:58.055: ERROR/AndroidRuntime(2123):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1490)
01-06 15:07:58.055: ERROR/AndroidRuntime(2123):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-06 15:07:58.055: ERROR/AndroidRuntime(2123):     at android.os.Looper.loop(Looper.java:123)
01-06 15:07:58.055: ERROR/AndroidRuntime(2123):     at android.app.ActivityThread.main(ActivityThread.java:3948)
01-06 15:07:58.055: ERROR/AndroidRuntime(2123):     at java.lang.reflect.Method.invokeNative(Native Method)
01-06 15:07:58.055: ERROR/AndroidRuntime(2123):     at java.lang.reflect.Method.invoke(Method.java:521)
01-06 15:07:58.055: ERROR/AndroidRuntime(2123):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
01-06 15:07:58.055: ERROR/AndroidRuntime(2123):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
01-06 15:07:58.055: ERROR/AndroidRuntime(2123):     at dalvik.system.NativeStart.main(Native Method)
¿Fue útil?

Solución

reemplazar la llamada findViewById con menu.findItem

Otros consejos

Su código XML y se ve bastante bien. Sin embargo usted no está llamando super.onCreateOptionsMenu() en el inicio de su método.

Se puede publicar el seguimiento de pila que se obtiene cuando la aplicación se bloquea? ¿En qué momento se cuelga? Cuando presione Menú , mientras que en esta actividad?

puede utilizar Menultem mi_settings = menu.getItem (0) No MENUITEM mi_settings = (MenuItem) findViewById (R.id.settings_button); es encontrar trabajo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top