2016-11-25 4 views
2

У меня есть плавающая кнопка действия, в которой я планирую отображать фрагменты. FAB не реагирует на клики, пока рябь видна. Я искал SO для подобных вопросов, но ответы, которые я нашел, не помогли.Плавающая кнопка действия, не реагирующая на нажатие

Вот мой макет для 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" /> 

Я переставить порядок кнопки в макете внутри макета координатора, но не работает. Затем я добавил android:onclick="runThis" в FAB в XML и метод в этом действии.

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

Получение ниже ошибки:

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

Пожалуйста, помогите мне понять, что мне не хватает. Спасибо

+0

попробуйте заменить SlidingMenuActivity.this с view.getContext() – poss

+0

@poss okay Я попробую это и дам вам знать, что произойдет – Zet

+1

Связанная дискуссия Google Code [здесь] (https://code.google. ком/p/android/issues/detail? id = 174871) –

ответ

1

Прошу указать ниже код и поле вместо SlidingMenuActivity с getApplicationContext(). Он должен работать.

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

Вы используете фрагменты, вы должны использовать кнопку слушателю вместо определения OnClick на XML, как это .... раздувать ФАБ на OnCreate зрения ...

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

или заменить SlidingActivity.this с getActivity()

+0

Я думаю, что он действительно использует Activity, но это должно работать. –