web-dev-qa-db-ja.com

フラグメントからツールバーのナビゲーションアイコンのクリックをキャッチする方法は?

レイアウトにツールバーがあるダイアログの断片があります。ツールバーで戻るボタン(ナビゲーションアイコン)を機能させ、クリックするとフラグメントを終了したい。しかし、(ダイアログ)フラグメントのツールバーのナビゲーションアイコンでクリックイベントをキャッチできません。

ツールバーを取得する方法は次のとおりです。

toolbar = (Toolbar) rootView.findViewById(R.id.toolbar);
toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
toolbar.setTitle(itemType);
((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);

以下は、ダイアログフラグメントのレイアウトファイルです。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout          xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:orientation="vertical"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="@color/panel_cyan"
    Android:id="@+id/rootLayout"
    >

<Android.support.v7.widget.Toolbar
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="?attr/actionBarSize"
    Android:layout_alignParentLeft="true"
    Android:layout_alignParentStart="true"
    Android:layout_alignParentTop="true"
    Android:background="@color/color_primary"
    Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

<ListView
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:id="@+id/listViewItems"
    />

</RelativeLayout>

**これまでに試したものの、失敗したものです**

ID R.id.homeのオプションアイテムのクリック

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        switch (id){
            case Android.R.id.home:
                finish();
                break;
        }
        return super.onOptionsItemSelected(item);
    }

ツールバーのsetNavigationOnClick():

toolbar.setNavigationOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                Toast.makeText(getActivity(), "Back clicked!",     Toast.LENGTH_SHORT).show();
            }
        });
36
priyankvex

setSupportActionBar(toolbar)の後にコードブロックtoolbar.setNavigationOnClickListenerを追加します

77
Dandong Wang

これは私のために動作します。

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(getApplicationContext(),"your icon was clicked",Toast.LENGTH_SHORT).show();
    }
});
13
Badr El Amrani
 toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            switch (item.getItemId()) {
                case Android.R.id.home:

                  // do what ever you want here
            }
            return true;
        }
    });
3
user3877122