4


アクションバーで「クリック」という名前のメニュー項目を取得するシナリオがありました。このボタンを手動でクリックせずに自動クリックにしたい。OnCreateView() から Android アクション バー メニュー項目にアクセスし、その特定のメニュー項目に「クリック」という名前でアクセスし、メソッド「performclick()」でボタンに使用する方法のように自動クリックを実行する方法はありますか。
誰でもこの問題を整理するのを手伝ってくれますか

4

2 に答える 2

6

メニュー項目のクリックを処理するには、おそらく次のようなものを使用します。

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    if (item.getItemId() == android.R.id.home)
    {
        this.onBackPressed();
    }
}

正しいメニュー項目で呼び出すだけonOptionsItemSelected(MenuItem item)です...それでうまくいくはずです...

クリックしたいアイテムを見つけるには、メニュー作成で次のようなものを使用します。

private MenuItem mItem = null;

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    getSupportMenuInflater().inflate(R.menu.abs_backup, menu);
    // get a reference to the item you want to click manually
    mItem = menu.findItem(id); 
    return true;
}

その後、onOptionsItemSelected(mItem);好きな場所に電話するだけです...

PS:

関数を作成し、この関数を呼び出してonOptionsItemSelected、ボタンのクリックをシミュレートしたい場所で呼び出すと、より美しくなる可能性があります...したがって、ボタンへの参照は必要ありません。私にとっては、これはよりきれいに見えます...

于 2013-10-11T08:21:35.587 に答える
1

MenuItem のメンバー変数を作成し、必要なときにアクセスできます。ただし、null の可能性があるため、アクセスする前に null を確認してください。Actionbar.setCustomView(R.layout.something);を使用して、全体のレイアウトとアクションを納得できるものとして処理することもできます。

protected class fragment extends Fragment{

    MenuItem searchItem;

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
      if(searchItem!=null){
        searchItem.setTitle("SEARCH");
        searchItem.setOnMenuItemClickListener(menuItemClickListener);
      }
    }


    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
      super.onCreateOptionsMenu(menu, inflater);
      inflater.inflate(com.sample.R.menu.menu_main, menu);
      searchItem = menu.findItem(R.id.search);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
      int itemId_ = item.getItemId();
      if (itemId_ == R.id.search) {
        handleYourEvent();
        return true;
      }
      return false;
    }
}
于 2013-10-11T10:20:01.547 に答える