2016-08-02 29 views
0

Ich habe versucht, einen "OnCheckedChangeListener" zu einem Switch in der Symbolleiste meiner Android App hinzuzufügen. Aber wenn ich auf den Switch klicke, bekomme ich die Log-Ausgabe nicht im Android-Monitor (logcat). Es gibt auch keine Ausnahmen im Protokoll. Die MainActivity:OnCheckedChangeListener funktioniert nicht mit einem Schalter in der Toolbar

LayoutInflater factory = getLayoutInflater(); 
View textEntryView = factory.inflate(R.layout.toolbar_switch, null); 

toolbarSwitch = (Switch) textEntryView.findViewById(R.id.switch_toolbar); 
toolbarSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
     Log.d("SMSAT", "Test"); 
    } 
}); 

Dies ist der Aufbau des Switch ist:

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:weightSum="1"> 
    <Switch 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/switch_toolbar" 
     android:text="" 
     android:layout_weight="0.16" 
     android:checked="true" /> 

    </LinearLayout> 

Das Menü:

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

<item 
    android:id="@+id/menu_switch_toolbar" 
    android:title="@string/menu_switch" 
    app:showAsAction="always" 
    app:actionLayout="@layout/toolbar_switch"></item> 

</menu> 

Vielen Dank für Ihre Hilfe!

+0

Wo initialisieren Sie die Symbolleiste? –

+0

Meinst du das? '@Override public boolean onCreateOptionsMenu (Menü-Menü) { // Das Menü aufblasen; Dies fügt Elemente zur Aktionsleiste hinzu, wenn sie vorhanden ist. getMenuInflater(). Aufblasen (R.menu.main, menu); Rückkehr wahr; } ' – Mika119

+0

Nein der Teil, wo Sie' toolbar = findViewById (R.id.toolbar); 'und' setSupportActionBar (Symbolleiste); ' –

Antwort

0

Ich musste meinen Code in der onCreateOptionsMenu-Methode verschieben. Hier

ist der Code:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 

    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main, menu); 

    View textEntryView = menu.findItem(R.id.menu_switch_toolbar).getActionView(); 

    toolbarSwitch = (Switch) textEntryView.findViewById(R.id.switch_toolbar); 
    toolbarSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
      Log.d("SMSAT", "Test"); 
     } 
    }); 

    return super.onCreateOptionsMenu(menu); 

}