在方法调用中模拟onOptionsItemSelected

时间:2013-08-23 18:57:20

标签: android android-layout statusbar android-menu

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

android:onClick="onHomeClicked"

当用户点击我的图片时,我希望它依次在活动中调用onOptionsItemSelected。我该怎么做?

以下代码为homeMenuItem提供了null:

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);
}

2 个答案:

答案 0 :(得分: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);
  }
}

答案 1 :(得分: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
    }