2016-11-25 1 views
2

Ich habe eine Floating-Aktion Schaltfläche in einer Aktivität, die ich über Fragmente anzeigen möchte. Der FAB reagiert nicht auf Klicks, während die Welligkeit sichtbar ist. Ich suchte SO nach ähnlichen Fragen, aber die Antworten, die ich fand, funktionierten nicht.Floating-Aktion-Schaltfläche reagiert nicht auf klicken

Hier ist mein Layout für die FAB.

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
app:theme="@style/MyTheme"> 

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/MainActivityFragmentContainer" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

</FrameLayout> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/homeFAB" 
    android:layout_width="65dp" 
    android:layout_height="65dp" 
    android:layout_gravity="bottom|center" 
    android:layout_margin="16dp" 
    android:src="@drawable/ic_add_image" 
    android:onClick="runThis" 
    app:layout_anchor="@id/MainActivityFragmentContainer" 
    app:layout_anchorGravity="bottom|center" /> 

neu geordnet ich die Reihenfolge der Taste im Layout im Layout-Koordinator aber hat nicht funktioniert. Dann habe ich android:onclick="runThis" zum FAB im XML und eine Methode in der Aktivität hinzugefügt.

public void runThis(View view) { 
    Toast.makeText(SlidingMenuActivity.this, "CLICKED", Toast.LENGTH_LONG).show(); 
} 

unten Fehler Anfahrt:

java.lang.IllegalArgumentException: Expected receiver of type xxx.xxx.SlidingMenuActivity, but got android.support.v7.internal.view.ContextThemeWrapper

Bitte helfen Sie mir herauszufinden, was mir fehlt. Vielen Dank

+0

versuchen, SlidingMenuActivity.this durch view.getContext() zu ersetzen – poss

+0

@poss okay Ich werde das versuchen und Sie wissen lassen, was passiert – Zet

+1

Verwandte Google Code Diskussion [hier] (https://code.google. com/p/android/issues/detail? id = 174871) –

Antwort

1

Versuchen Sie mit unten Code und pass statt SlidingMenuActivity mit getApplicationContext(). Es sollte funktionieren.

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 
1

Sie Fragmente verwenden, sollten Sie klicken Hörer verwenden, anstatt onClick auf xml wie folgt definieren .... aufblasen fab auf onCreate Blick ...

FloatingActionButton myFab = (FloatingActionButton) myView.findViewById(R.id.homeFAB); 
myFab.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     doyourThing(); 
    } 
}); 

oder ersetzen SlidingActivity.this mit getActivity()

+0

Ich denke, dass er wirklich Aktivität verwendet, aber das sollte anscheinend funktionieren. –