Новое занятие - Новое меню - PullRequest
       5

Новое занятие - Новое меню

5 голосов
/ 20 октября 2011

Я продолжил разработку приложений для Android и добавил новое действие, которое активируется нажатием на элемент списка.

Проблема

Моя новая активность показывает меню из моей основной деятельности. Это довольно неожиданно. Вопрос, как я могу решить это?

Что я сделал до сих пор

В своей основной деятельности я создал меню (menu.xml), которое добавляется так:

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

Это работает как ожидалось.

Теперь я начинаю новое занятие так:

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

    }
  });

Действие начинается, у меня есть информация от объекта Bundle, и в новом задании мне нужно новое меню (detail_menu.xml). Затем я реализую это так же, как и раньше:

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

Содержимое 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>

Содержимое файла 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>

Ответы [ 3 ]

0 голосов
/ 20 октября 2011

хорошо, в комментариях я предложил проект Repox to Clean .... ну, и это помогло :) Это случилось со мной много раз: ресурсы не существуют, даже если они находятся в сгенерированном R.java или ресурсы в точках R.javeне точно, что я хочу ... в любом случае, Clean всегда помогает (или удаляет R.java)

Repox знает, как использовать SO, и он хочет сохранить свою "100% -ную скорость приема", поэтому я сделал свой ответ здесь:)

0 голосов
/ 20 октября 2011

Ваш код выглядит нормально. Попробуйте обновить проект (выберите его в проводнике пакетов и нажмите F5 ), а затем очистите его (перейдите к Проект> Очистить ... из меню окна).

0 голосов
/ 20 октября 2011

попробуйте позвонить super.onCreateOptionsMenu(menu);, прежде чем надувать свое меню.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...