-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

メソッドを宣言し、それを呼び出す必要がある可能性がありonOptionsItemSelectedますonHomeClicked

    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 に答える