FloatingActionButton OnClickListener无法正常工作

时间:2017-01-05 18:33:16

标签: android floating-action-button

没有任何错误。但是,您可以看到它被点击动画。 Java代码是从子活动调用的,其父活动是MyMainActivity。

我还将包含该项目的github,只是想要尝试一下。

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fav_button);

    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Log.v("CLICKED","");
        }
    });

布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.lopic.movies.DetailActivity">

    <android.support.v4.widget.NestedScrollView
        android:id="@+id/activity_detail"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:id="@+id/original_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textAlignment="center"
                android:textAppearance="@style/TextAppearance.AppCompat.SearchResult.Title"
                android:textSize="24sp" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="horizontal">

                <ImageView
                    android:id="@+id/poster"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:adjustViewBounds="true" />

                <LinearLayout

                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:orientation="vertical"
                    android:paddingLeft="5dp">

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="@string/vote_avg"
                        android:textAppearance="@android:style/TextAppearance.Medium" />

                    <TextView
                        android:id="@+id/vote_avg"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="@string/release_date"
                        android:textAppearance="@android:style/TextAppearance.Medium" />

                    <TextView
                        android:id="@+id/release_date"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

                    <LinearLayout
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal">

                        <Button
                            android:id="@+id/trailer_button"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:paddingRight="5dp"
                            android:text="Watch Trailer" />
                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:paddingLeft="5dp">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/Overview"
                    android:textAppearance="@android:style/TextAppearance.Medium" />

                <TextView
                    android:id="@+id/overview"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
            </LinearLayout>
        </LinearLayout>
    </android.support.v4.widget.NestedScrollView>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fav_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:src="@drawable/ic_favorite_border_white_24px"
        android:clickable="true"/>

</android.support.design.widget.CoordinatorLayout>

5 个答案:

答案 0 :(得分:1)

以编程方式将FAB置于前方也应该有效:

FloatingActionButton fab = (FloatingActionButton) 
findViewById(R.id.fab);
fab.bringToFront();
fab.setOnClickListener... //etc

答案 1 :(得分:0)

尝试在xml中设置onClick事件。 android:onClick="yourMethod"

答案 2 :(得分:0)

如果你没有收到任何错误并且动画正在运行,那么一切似乎都没问题。

但是,我猜你是以错误的方式使用Log。现在,你做了:

Log.v("CLICKED","");

表示使用message = ""打印TAG = CLICKED。如果你想在LogCat中看到有意义的东西,请使用以下内容:

Log.v("myTag","FAB Clicked");

答案 3 :(得分:0)

onClickListener实际上工作正常。当你点击fab按钮时,它进入方法。

以下行正在执行。试着把 -

fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Toast.makeText(DetailActivity.this,"Clicked",Toast.LENGTH_SHORT).show();
            Log.v("CLICKED","");

        }
    });

而不是

Log.v("CLICKED","");

答案 4 :(得分:0)

对不起,我没有足够的声誉来发表评论。

我已将其放入onCreate()

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    FloatingActionButton floatingactionbutton = findViewById(R.id.main_FloatingActionButton_addDate);
    floatingactionbutton.bringToFront();
    floatingactionbutton.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();
        }
    });
}

,当我说AndroidStudio“运行”时,它不起作用。所以我对onResume()做了同样的事情,一切工作正常。感谢阿米特(Amit)