2015-11-12 3 views
2

мой FAB onClick не работает с API 17, но на API 21 он работает нормально.FloatingActionButton OnClickListener не работает на API 17

Я использую:

compile 'com.android.support:design:23.+' 

FAB раскладку:

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/myFAB" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentEnd="true" 
    android:layout_gravity="bottom" 
    android:layout_marginBottom="26dp" 
    android:layout_marginLeft="16dp" 
    android:layout_marginRight="16dp" 
    app:backgroundTint="#FFC107" 
    android:clickable="true" 
    android:elevation="@dimen/design_fab_elevation" 
    android:src="@drawable/ic_add_24dp" 
    app:borderWidth="0dp" /> 

И активность:

myFAB = (FloatingActionButton) findViewById(R.id.myFAB); 
callCadastroEncoemnda(); 

protected void callCadastroEncoemnda() { 
    myFAB.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Intent intent = new Intent(MainActivity.this, newPackage.class); 
      MainActivity.this.startActivity(intent); 
     } 
    }); 
} 
+0

Определение "не работает", пожалуйста. У вас крушение приложения? Есть что-нибудь в logcat? Какое поведение оно проявляет? Что вы ожидали от этого? –

+0

@MH. Ничего не происходит, это не сбой, ничего в logcat, это похоже на то, что я не нажал –

+0

Вы пытались удалить «android: clickable =« true »из представления? Он не видит, что вам нужно, если вы установите прослушиватель кликов. Я быстро протестировал на устройстве API 17, в котором я лежал, но для меня это работает в любом случае. То есть: у меня нет проблемы, которую вы описываете. Можете ли вы поставить точку останова в обратном вызове 'onClick()', чтобы увидеть, если он срабатывает? 'newPackage.class' выглядит немного подозрительно для меня - он не придерживается соглашений об именах Java. –

ответ

9

РЕШИТЬ!

На моем шаблоне, FloatingActionButton был реветь из RecyclerView, и когда я нажимаю на Fab, я щелкал на RecyclerView (который был пуст)

До:

<android.support.v7.widget.Toolbar 
     android:id="@+id/my_awesome_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="@color/primary" 
     android:elevation="4dp" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/myFAB" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentEnd="true" 
     android:layout_gravity="bottom" 
     android:layout_marginBottom="26dp" 
     android:layout_marginLeft="16dp" 
     android:layout_marginRight="16dp" 
     app:backgroundTint="#FFC107" 
     android:clickable="true" 
     android:elevation="@dimen/design_fab_elevation" 
     android:src="@drawable/ic_add_24dp" 
     app:borderWidth="0dp" 
     android:layout_alignParentTop="false" 
     android:layout_alignParentRight="false" 
     android:layout_alignWithParentIfMissing="false" 
     android:layout_alignParentLeft="false" /> 

    <android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/swipeRefreshLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/my_awesome_toolbar"> 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/rv" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_below="@id/my_awesome_toolbar" 
      android:layout_marginTop="?attr/actionBarSize" /> 
    </android.support.v4.widget.SwipeRefreshLayout> 

После:

<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/my_awesome_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="@color/primary" 
      android:elevation="4dp" 
      android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

     <android.support.v4.widget.SwipeRefreshLayout 
      android:id="@+id/swipeRefreshLayout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_below="@+id/my_awesome_toolbar"> 

      <android.support.v7.widget.RecyclerView 
       android:id="@+id/rv" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_below="@id/my_awesome_toolbar" 
       android:layout_marginTop="?attr/actionBarSize" /> 
     </android.support.v4.widget.SwipeRefreshLayout> 

     <android.support.design.widget.FloatingActionButton 
      android:id="@+id/myFAB" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentEnd="true" 
      android:layout_gravity="bottom" 
      android:layout_marginBottom="26dp" 
      android:layout_marginLeft="16dp" 
      android:layout_marginRight="16dp" 
      app:backgroundTint="#FFC107" 
      android:clickable="true" 
      android:elevation="@dimen/design_fab_elevation" 
      android:src="@drawable/ic_add_24dp" 
      app:borderWidth="0dp" 
      android:layout_alignParentTop="false" 
      android:layout_alignParentRight="false" 
      android:layout_alignWithParentIfMissing="false" 
      android:layout_alignParentLeft="false" /> 
</RelativeLayout> 
+0

Вы правы, но я не понял. Он отлично работает со всеми другими версиями API, а не с API 16. Как получилось? –

+0

@ Ranvijay Я думаю, это проблема совместимости. Я разрабатываю только для API Android 17+, который работает на 87% устройств. –

Смежные вопросы