2011-10-20 24 views
5

Avancé con mi desarrollo en aplicaciones de Android y ahora he agregado una nueva actividad que se activa presionando en un elemento de vista de lista.Nueva actividad - Nuevo menú

El problema

Mi nueva actividad muestra el menú de mi actividad principal. Esto es bastante inesperado. La pregunta es, ¿cómo puedo resolver esto?

¿Qué he hecho hasta ahora

En mi actividad principal, han creado un menú (menu.xml) que se añade la siguiente manera:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 
    return true; 
}  


@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle item selection 
    switch (item.getItemId()) { 
    case R.id.refresh: 
     new DownloadXmlTask().execute(); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
}  

Esto funciona como se esperaba.

Ahora empezar la nueva actividad como esta:

//lv is (ofc) my listview 
lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

     EntryObject obj = entries.get(position); 

     Bundle bundle = new Bundle(); 
     bundle.putString("title", obj.title); 
     bundle.putString("teaser", obj.teaser); 
     bundle.putString("description", obj.description); 
     bundle.putString("date", obj.date); 
     bundle.putString("key", obj.key); 
     bundle.putString("mp4", obj.mp4); 

     Intent myIntent = new Intent(); 
     myIntent.setClassName("dk.jyskebank.programserie.tolvsytten", "dk.jyskebank.programserie.tolvsytten.DetailedActivity"); 
     myIntent.putExtras(bundle); 

     startActivity(myIntent); 

    } 
    }); 

La actividad comienza, tengo mi información del objeto Bundle conmigo y en la nueva actividad que necesito un nuevo menú (detail_menu.xml). luego poner en práctica este de la misma manera que antes:

@Override 
    public boolean onCreateOptionsMenu(Menu detail_menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.detail_menu, detail_menu); 
     return true; 
    }  


    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle item selection 
     switch (item.getItemId()) { 
     case R.id.share: 
      startSharing(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
     } 
    }  

El contenido de menu.xml:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/refresh" android:icon="@drawable/ic_menu_refresh" android:title="@string/refresh" /> 
    <item android:id="@+id/featured" android:icon="@drawable/ic_menu_home" android:title="@string/featured" /> 
    <item android:id="@+id/most_recent" android:icon="@drawable/ic_menu_day" android:title="@string/most_recent" /> 
    <item android:id="@+id/favorites" android:icon="@drawable/ic_menu_emoticons" android:title="@string/favorites" /> 
    <item android:id="@+id/rated" android:icon="@drawable/ic_menu_star" android:title="@string/top_rated" /> 
    <item android:id="@+id/menu_more" android:icon="@drawable/ic_menu_more" android:title="@string/more" /> 
</menu> 

El contenido de detail_menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/share" android:icon="@drawable/ic_menu_share" android:title="@string/share" /> 
</menu> 
+0

+1 para explicación. podría agregar los 'menu.xml' y' detail_menu.xml', para que los archivos adjuntos con la pregunta sean más claros. –

+0

Actualicé las preguntas con el xml. – Repox

+0

@Repox solo algunas preguntas 1. ¿Intentó limpiar (menú Proyecto-> Limpiar ...) el Proyecto 2. por qué está usando 'myIntent.setClassName (" dk.jyskebank.programserie.tolvsytten "," dk.jyskebank.programserie .tolvsytten.DetailedActivity ");' not 'myIntent = new Intent (this, DetailedActivity.class);'? – Selvin

Respuesta

0

ok en los comentarios sugerí el proyecto Repox to Clean .... bien y me ayudó :) Me ha sucedido muchas veces: los recursos no existen incluso si están en R.java o recursos generados en R. jave señala no exactamente lo que quiero ... de todos modos Limpiar siempre ayuda (o eliminar R.java)

Repox sabe cómo usar SO y él wana mantiene su "tasa de aceptación del 100%" por eso hice mi respuesta aquí :)

0

intente llamar super.onCreateOptionsMenu(menu); antes de inflar tu menú

+0

Gracias por la sugerencia, pero esto causó una excepción android.content.res.Resources $ NotFoundException: Resource ID # 0x7f070001 – Repox

0

Su código se ve bien. Intente actualizar el proyecto (selecciónelo en el explorador de paquetes y presione F5) y luego límpielo (vaya a Proyecto> Limpiar ... desde el menú de la ventana).

Cuestiones relacionadas