java - 我们可以从 onOptionsItemSelected() click 中获取 Layout 中定义的按钮的 onClickListener 功能吗

标签 java android

这是我可以为我的问题命名的最简化的版本。

问题:假设两个按钮在一个 Activity 中可以正常使用它们的功能。我想要的是,如果我们从菜单项中单击一个项目,我们如何(如果可能)将它集成到 onClickListener 按钮之一,以便它执行与其中一个按钮已经执行的功能相同的功能。

场景:假设我们在 XML 文件中有两个按钮实现了 onCLickListener 接口(interface)。单击菜单项时,内部类构造函数已被初始化,但它并没有更进一步,这是有道理的。任何人都可以指导我这里有哪些选项可以使用我想在此处嵌入的逻辑。

 cameraButton.setOnClickListener(new MyButtonClickListener(MyConstants.OPEN_CAMERA));
 mediaButton.setOnClickListener(new MyButtonClickListener(MyConstants.OPEN_MEDIA));

其中 MyButtonClickListener 是一个内部类

private class MyButtonClickListener implements View.OnClickListener {

    private int preference;

    public MyButtonClickListener(int preference) {
        this.preference = preference;
        Log.e("Pref in Constructor:", String.valueOf(preference));

    }

    public MyButtonClickListener() {
    }

    @Override
    public void onClick(View v) {
        Log.e("Pref in onClick:", String.valueOf(preference));
        startScan(preference);
    }
}

方法 startScan 是:

public void startScan(int preference) {
    Log.e("Pref: StartScan Method:", String.valueOf(preference));

    Intent intent = new Intent(this, MyActivity.class);
    intent.putExtra(MyConstants.OPEN_INTENT_PREFERENCE, preference);
    startActivityForResult(intent, REQUEST_CODE);
}

onOptionsItemSelected:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    switch (id) {

    case R.id.gallery:
    new MyButtonClickListener(MyConstants.OPEN_MEDIA);
    //return true;

最佳答案

由于您的 startScan() 方法属于您的 Activity/fragment 类,您可以在 onOptionsItemSelected()< 的所需 case block 中直接调用它 方法。您不需要为此通过界面。

关于java - 我们可以从 onOptionsItemSelected() click 中获取 Layout 中定义的按钮的 onClickListener 功能吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37917165/

相关文章:

java - 无法使用 Maven 部署到 Heroku : Forbidden

java - 开放式 postgres : No suitable driver on tomcat

java - 使用矩阵旋转立方体给出错误的结果

java - Android N - 在运行时更改区域设置

android - 从 View 中获取错误位置

Android ActionBar - 将自定义 View 推送到屏幕底部

java - JIRA6 REST API - HttpClient 和 HttpClientCache JAR 冲突

java - 无法将在方法级别声明的泛型类型用于需要在其他地方声明的泛型类型的方法参数

java - JASPIC JDBC 领域身份验证的 "register new user"解决方案是什么?

android - Xamarin Android XamarinBuildAndroidAarRestore 任务无法从 Xamarin.Build.Download 加载