没有任何错误。但是,您可以看到它被点击动画。 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>
答案 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)