2015-07-09 17 views
22

Düzeninde araç çubuğum bulunan bir iletişim parçam var. Araç çubuğunda çalışan geri düğmesine (Navigasyon Simgesi) geri dönmek istiyorum ve tıklandığında parçanın dışına çıkmak istiyorum. Ancak, araç çubuğunun (iletişim) fragmanındaki gezinme simgesindeki tıklama olayını yakalayamıyorum. ** Burada **Gezinme simgesi nasıl yakalanır?

<?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> 

şimdiye kadar çalıştı ama başarısız budur: İşte

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

iletişim fragman için benim düzeni dosyasıdır: Burada

Ben çubuğunu alıyorum nasıl O'da

Seçenekler öğesi tıklama 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); 
    } 
Araç çubuğunda 210

setNavigationOnClick():

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

, parçanızda setHasOptionsMenu (true); – Pr38y

+0

Evet. SetHasOptionsMenu (true) var; onCreate() – priyankvex

+1

Eğer setHasOptionMenu true ayarını seçtiyseniz ve süper çağrı ile 'onCreateOptionsMenu 'seçeneğini geçersiz kılarsanız,' onOptionsItemSelected' tetiklenecektir. Hata ayıklama noktasını 'onOptionsItemSelected' içine koyabilir ve çağrılıp çağrılmadığını kontrol edebilir misiniz? – Pr38y

cevap

51

Bu benim için çalışıyor setSupportActionBar(toolbar)

+0

Bu yaklaşım için çalışmıyor (item.getItemId()) { vaka android.R.id.home: Tost .makeText (bu, "Ev Tıklandı ...", Toast.LENGTH_SHORT) .show(); kırılması; } – Trancer

+0

@Trancer için çalışmıyor Ev düğmesi – Abhishek

+0

@Abhishek, yaklaşımınız çalışmıyor ve doğru değil. Ben bu sorunu çözmek: OS – Trancer

1
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; 
     } 
    }); 
+0

Bu yaklaşım ev düğme yaklaşım onOptionItemSelected anahtarı kullanmak için ev düğmesi – Trancer

5

sonra kod bloğunu toolbar.setNavigationOnClickListener ekleyin.

toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Toast.makeText(getApplicationContext(),"your icon was clicked",Toast.LENGTH_SHORT).show(); 
    } 
}); 
+0

kullanabilirsiniz Bu yaklaşım Home düğmesi için çalışmıyor – Trancer