当前位置: 首页 > 知识库问答 >
问题:

如何获取操作栏按钮?findviewbyid似乎不起作用

谢鸿羲
2023-03-14

假设我有两个按钮,一个是操作栏中的操作按钮(@id/Button1)。另一个是布局中的常用按钮(@id/Button2)。

单击按钮2时,如何将按钮1设置为禁用状态?

findViewById(按钮1)似乎不起作用。它将返回null。

这是我的菜单xml:

<代码>

这就是我的主体性:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.my, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.button1 ) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    button1 = (Button) findViewById(R.id.button1);/*which return null*/
    button2 = (Button) findViewById(R.id.button2);
    button2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            button1.setEnabled(false);/*what i failed to do*/
        }
    });
}

共有3个答案

曹浩淼
2023-03-14

在使用findViewById之前,您必须膨胀布局/视图。

就像这样:

private Toolbar toolbar;

// Set a Toolbar to replace the ActionBar.
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

cartLayout = (RelativeLayout) toolbar.findViewById(R.id.rl_cart);

您的工具栏布局如下:

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right">

    <RelativeLayout
        android:id="@+id/rl_cart"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:padding="5dp">


        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dp"
            android:src="@drawable/ic_cart" />

    </RelativeLayout>
</RelativeLayout>

你可以在这里找到更多答案:

如何在Android中使用自定义按钮实现自定义操作栏?

如何在android中设置左右两个自定义actionbar按钮?

颛孙智勇
2023-03-14

尝试一下这个
public uluulubetu1Click(View v){Button Buton2=(Button)getActionBar(). getCustomView(). findViewById(R.id.button2);button2.setClickable(false);button2.set启用(false);}

井通
2023-03-14

1.在活动类中创建变量MenuItem

    MenuItem menuItem;

2.在onCreateOptionsMenu中找到您的变量

    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.menu_main, menu);
            menuItem = menu.findItem(R.id.item_circuit);
            return super.onCreateOptionsMenu(menu);
        }

禁用buttonClick方法中的项目

 button2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    menuItem.setEnabled(false);
                }
            });
 类似资料:
  • 在这些Android文档的帮助下。我正在尝试做一个操作栏后退按钮。我得到一个操作栏后退按钮,如下图: 输出: 但我的问题是在看了画廊的图片后,我按下了动作栏后退按钮。 然后它不工作了。但它必须回到上一页。 下面列出了代码。 厨房活动。java: GalleryDetailFragment。java: 如果你知道如何解决这些问题,任何人都可以帮助我。谢谢你。

  • 我有一个工作流,它执行一系列模糊测试,最后计算所有崩溃程序子目录中的文件总数。后来,在另一份工作中,我使用该号码向Slack发送通知。但是,由于某些原因,不会产生任何输出,最重要的是,即使崩溃程序的数量不是零,下一个作业也不会运行! 有人知道我做错了什么吗?谢谢!

  • 我的代码看起来像 我的文件如下所示 当我运行程序时,我看到 我怎样才能修好它呢?

  • 问题内容: 我在使用该功能时遇到了麻烦。 我只需要知道SQL查询是否返回零行。 我已经尝试过以下简单的语句: 类型是哪里。上面的代码似乎不起作用。无论是否为空,它将始终打印该消息。 我检查了SQL查询本身,当存在行时它正确返回了非空结果。 关于如何确定查询是否已返回0行的任何想法?我用谷歌搜索,找不到任何答案。 问题答案: ResultSet.getFetchSize()不返回结果数!从这里: 使

  • 我正在开发一个android项目,我正在尝试使用来自http://developer.android.com/training/implementing-navigation/nav-drawer.html.的示例集成新的导航抽屉 它主要工作除了一件事,动作栏向上按钮不显示菜单,但如果我用手指从边缘滑动主活动屏幕,菜单就会出现,所以我知道实际菜单没有问题,它只是动作栏按钮。 下面是代码 感谢您提供

  • 问题内容: 即使将属性设置为,我仍然会插入重复的条目。 我设置了使用定期在。我没有用表 问题答案: 我没有使用JPA创建表 然后,您应该在语句中向表中添加唯一约束,例如,如果您使用的是MySQL: