2017-06-11 4 views
0

私は、私がStackOverflowでそれについて多くの答えを読んだが、私のアプリは以下の点でクラッシュするため、アクションバーのスイッチにリスナーを追加しようとしています。アクションバーアンドロイドにスイッチリスナーを追加するには?

私のメインメニューXML

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools"> 
<item 
    android:id="@+id/myswitch" 
    android:title="" 
    app:showAsAction="always" 
    app:actionLayout="@layout/switch_layout"/> 
</menu> 

私のスイッチレイアウト

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin"> 
<android.support.v7.widget.SwitchCompat 
    android:id="@+id/switchForActionBar" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="" /> 
</RelativeLayout> 

私には、オプションメニューを作成するには、常に私がスイッチmainSwitchOnOffSw =(ことがわかったデバッグでこの

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    getMenuInflater().inflate(R.menu.mainmenu, menu); 
    for (int i = 0; i < menu.size(); i++) { 
     MenuItem item = menu.getItem(i); 
     if (item.getItemId() == R.id.myswitch) { 
      View view = MenuItemCompat.getActionView(item); 
      if (view != null) { 
       **Switch mainSwitchOnOffSw = (Switch) view.findViewById(R.id.switchForActionBar);** 
       //to do add a listener for this switch 
      } 
     } 
    } 

    return true; 
} 

ですスイッチ)view.findViewById(R.id.switchForActionBar);この行はアプリケーションクラッシュを引き起こします。今私の問題が明確になることを願っています。リスナーをアクションバーのスイッチに接続したいが、そのスイッチのオブジェクトにインスタンスを取得できない。上記はStackOverflowの答えのほとんどがどのように向けられているかです。これに関する助言は高く評価されます。

はあなたのレイアウトでSwitchCompatを使用しているよう

答えて

2
Switch mainSwitchOnOffSw = (Switch) view.findViewById(R.id.switchForActionBar); 

SwitchCompat mainSwitchOnOffSw = (SwitchCompat) view.findViewById(R.id.switchForActionBar); 

であるべきいただきありがとうございます。

+0

ありがとうございました。 – Rishabh

関連する問題