-1

我在 xml 布局中有一个 ImageView。ImageView 有一个 onClick 方法。

android:onClick="onHomeClicked"

当用户单击我的图像时,我希望它依次onOptionsItemSelected在活动内部调用。我该怎么做?

以下代码为 null 提供homeMenuItem

MenuItem homeMenuItem;

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    homeMenuItem = menu.findItem(android.R.id.home);
    super.onPrepareOptionsMenu(menu);
    return true;
}

public void onHomeClicked(View view) {
    onOptionsItemSelected(homeMenuItem);
}
4

2 回答 2

1

你没有MenuItem,任何逻辑onOptionsItemSelected()都会失败(假设有多个选项)。

由于您似乎需要共享代码,请将那段逻辑移到它自己的方法中,然后从onHomeClicked()和调用该方法onOptionsItemSelected()

例如

private void mySharedMethod (){
 //implementation
}

public void onHomeClicked (View v){
  mySharedMethod();
}

public boolean onOptionsItemSelected (MenuItem item){
  switch (item.getItemId ()){
    case android.R.id.home:
       mySharedMethod();
       return true;
    default:
       return super.onOptionsItemSelected (item);
  }
}
于 2013-08-23T19:06:48.413 回答
0

可能您必须声明方法并从中调用onOptionsItemSelectedonHomeClicked

    onOptionsItemSelected(MenuItem item){
        switch(item.getItemId()) {
        case R.id.btn:
           youNewMethod();
        break;
        }
    }

    public void onHomeClicked() {
        youNewMethod();
    }

    private void youNewMethod(){
        // write your code here
    }
于 2013-08-23T19:08:35.270 回答