这是我可以为我的问题命名的最简化的版本。
问题:假设两个按钮在一个 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/