2011-10-20 2 views
5

Sono andato avanti con il mio sviluppo in applicazioni Android e ora ho aggiunto una nuova attività che viene attivata con una pressione su un elemento listview.Nuova attività - Nuovo menu

Il problema

mia nuova attività illustra il menu dalla mia attività principale. Questo è abbastanza inaspettato. La domanda è, come posso risolvere questo?

Che cosa ho fatto finora

Nella mia attività principale, ho creato un menu (menu.xml) che si aggiunge in questo modo:

@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); 
    } 
}  

Questo funziona come previsto.

Ora comincio la nuova attività in questo modo:

//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); 

    } 
    }); 

L'attività inizia, io ho le mie informazioni dall'oggetto bundle con me e nella nuova attività ho bisogno di un nuovo menu (detail_menu.xml). Ho quindi implementare questo allo stesso modo di prima:

@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); 
     } 
    }  

Il contenuto di 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> 

Il contenuto di 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 per spiegazione. potresti aggiungere "menu.xml" e "detail_menu.xml", in modo che gli allegati con la domanda diventino più chiari. –

+0

Ho aggiornato le domande con l'xml. – Repox

+0

@Repox solo alcune domande 1. Hai provato a pulire (menu Progetto-> Pulisci ...) il Progetto 2. perché stai usando 'myIntent.setClassName (" dk.jyskebank.programserie.tolvsytten "," dk.jyskebank.programserie .tolvsytten.DetailedActivity ");' not 'myIntent = new Intent (this, DetailedActivity.class);'? – Selvin

risposta

0

ok nei commenti ho suggerito Repox per pulire il progetto .... beh e mi ha aiutato :) Mi è successo molte volte: le risorse non esistono anche se sono generate in R.java o risorse in R. jave punta a non esattamente quello che voglio ... comunque pulito sempre aiuto (o cancellando R.java)

Repox sa come usare SO e lui wana mantiene il suo "100% di tasso di accettazione" ecco perché ho fatto la mia risposta qui :)

0

provare a chiamare prima di gonfiare super.onCreateOptionsMenu(menu); il tuo menu.

+0

Grazie per il suggerimento, ma ciò ha causato un'eccezione android.content.res.Resources $ NotFoundException: ID risorsa # 0x7f070001 – Repox

0

Il tuo codice sembra buono. Prova ad aggiornare il progetto (selezionalo nel package explorer e premi F5) e puliscilo (vai su Progetto> Pulisci ... dal menu della finestra).