首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >新活动-新菜单

新活动-新菜单
EN

Stack Overflow用户
提问于 2011-10-20 12:09:25
回答 2查看 526关注 0票数 5

我继续我在Android应用程序中的开发,现在添加了一个新的活动,它是通过按下listview项来激活的。

问题

我的新活动显示了我主要活动的菜单。这是相当出乎意料的。问题是,我怎么解决这个问题?

到目前为止我做了什么

在我的主要活动中,我创建了一个菜单(menu.xml),它添加如下:

代码语言:javascript
复制
@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);
    }
}    

这如预期的那样起作用。

现在我开始这样的新活动:

代码语言:javascript
复制
//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)。然后,我以和以前一样的方式来实现这一点:

代码语言:javascript
复制
   @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的内容:

代码语言:javascript
复制
<?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含量

代码语言:javascript
复制
<?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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-20 13:58:44

好吧,在评论中,我建议用天花清洁项目..。它帮助了我:)它发生在我身上很多次:资源不存在,即使它们在生成的R.java中,或者R.jave中的资源指向不完全正确的,我想要的.无论如何,清除总是帮助(或删除R.java)

Repox知道如何使用SO,他保留了他的"100%接受率“,这就是我为什么在这里作出回应的原因:)

票数 0
EN

Stack Overflow用户

发布于 2011-10-20 12:44:19

试着在打开菜单之前调用super.onCreateOptionsMenu(menu);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7835714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档