这是我的按钮无法响应的布局点击(已编辑):
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView1"
android:background="@drawable/texture"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="600dp"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<EditText
android:id="@+id/input_first_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:ems="10"
android:inputType="text"
android:textSize="@dimen/text_size">
<requestFocus />
</EditText>
<EditText
android:id="@+id/input_last_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/input_first_name"
android:ems="10"
android:inputType="text"
android:textSize="@dimen/text_size" />
<EditText
android:id="@+id/input_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/input_last_name"
android:ems="10"
android:inputType="number"
android:textSize="@dimen/text_size" />
<ImageView
android:id="@+id/profile_image"
android:layout_width="140dp"
android:layout_height="140dp"
android:layout_below="@+id/input_age"
android:layout_centerHorizontal="true"
android:src="@drawable/add" />
<Button
android:id="@+id/save_button"
style="@style/MyCustomButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_below="@+id/slider"
android:layout_toLeftOf="@+id/edit_button"
android:onClick="run"
android:text="@string/save_button" />
<Button
android:id="@+id/edit_button"
style="@style/MyCustomButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/slider"
android:text="@string/edit_button" />
<Button
android:id="@+id/delete_button"
style="@style/MyCustomButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/slider"
android:layout_toLeftOf="@+id/save_button"
android:layout_toStartOf="@+id/save_button"
android:text="@string/delete_button" />
<Button
android:id="@+id/edit_birthday_date"
style="@style/MyCustomButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/profile_image"
android:layout_centerHorizontal="true" />
<LinearLayout
android:id="@+id/button_container1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/cake_image"
android:layout_marginTop="10dp"
android:clickable="true"
android:weightSum="3"
android:orientation="horizontal">
<Button
android:id="@+id/button_movie"
style="@style/MyCustomButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_weight="1" />
<Button
android:id="@+id/button_books"
style="@style/MyCustomButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_weight="1"/>
<Button
android:id="@+id/button_tech"
style="@style/MyCustomButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
android:id="@+id/button_container2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/button_container1"
android:layout_marginTop="10dp"
android:orientation="horizontal"
android:weightSum="3"
android:clickable="true">
<Button
android:id="@+id/button_body_care"
style="@style/MyCustomButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_weight="1"/>
<Button
android:id="@+id/button_clothes"
style="@style/MyCustomButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_weight="1" />
<Button
android:id="@+id/button_accessories"
style="@style/MyCustomButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
android:id="@+id/button_container3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/button_container2"
android:layout_marginTop="10dp"
android:clickable="true"
android:orientation="horizontal">
<Button
android:id="@+id/button_games"
style="@style/MyCustomButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/edit_button"
android:layout_alignTop="@+id/slider"
android:layout_gravity="center_horizontal"/>
</LinearLayout>
<ImageView
android:id="@+id/cake_image"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignStart="@+id/edit_birthday_date"
android:layout_below="@+id/edit_birthday_date"
android:layout_marginTop="20dp"
android:src="@drawable/birthday_cake" />
<TextView
android:id="@+id/turning_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/cake_image"
android:layout_toEndOf="@+id/cake_image"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
<com.daimajia.slider.library.SliderLayout
android:id="@+id/slider"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_below="@+id/cake_image" />
</RelativeLayout>
</ScrollView>
当一个正在工作的按钮被点击可见时,我为每个线性布局可见性设置了,所以我认为这不是问题。
这是java中的代码:
if (getMovieCategory.equals("movies")) {
buttonCategoryMovie.setText("MOVIES");
buttonCategoryMovie.setTextColor(Color.parseColor("#ffffff"));
buttonCategoryMovie.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_cancelar, 0, 0, 0);
buttonCategoryMovie.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String movies = "movies";
dbh.updateCategoryMovies(birthdayId, movies);
}
});
} else {
buttonCategoryMovie.setText("MOVIES");
buttonCategoryMovie.setTextColor(Color.parseColor("#ffffff"));
buttonCategoryMovie.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_add, 0, 0, 0);
buttonCategoryMovie.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dbh.deleteMovies(getMovieCategory);
}
});
}
除了onClick之外,一切正常。我没有错误。我的按钮在点击时没有响应。
答案 0 :(得分:2)
尝试将ifOnClickListener处理出if条件。
答案 1 :(得分:1)
尝试在LinearLayout中将android:visibility="gone"
更改为android:visibility="visible"
。
再次将android:clickable="true"
添加到您的LinearLayout
答案 2 :(得分:1)
。您需要使用大量冗余进行编码,并冒着引入错误的风险,其中一些可能不会立即显现出来。这是您发布的代码示例的更精简和更清晰的版本,使用一个onClick方法来处理您的if(){else}条件。
buttonCategoryMovie.setText("MOVIES");
buttonCategoryMovie.setTextColor(Color.parseColor("#ffffff"));
buttonCategoryMovie.setCompoundDrawablesWithIntrinsicBounds(
getMovieCategory.equals("movies") ? R.drawable.ic_cancelar : R.drawable.ic_add, 0,0,0
);
buttonCategoryMovie.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (getMovieCategory.equals("movies")) {
String movies = "movies";
dbh.updateCategoryMovies(birthdayId, movies);
} else {
dbh.deleteMovies(getMovieCategory);
}
}
});
编辑1:我错误地遗漏了您的String movies = "movies"
并重新添加了。如果您只使用此字符串一次,则将其作为参数传递对于dbh.updateCategoryMovies(birthdayId, movies)
,您只需拨打dbh.updateCategoryMovies(birthdayId, "movies")
并删除String movies = "movies"
编辑2 :如果您没有看到完整的源代码,我就不知道您是否在某处更改getMovieCategory
的值。如果没有,那么下面的示例将在每次单击按钮时更改它(一旦您启动应用程序来测试示例,您的buttonCategoryMovie
将是一个通用按钮;一旦您开始单击该按钮,它应该在显示您的R.drawable.ic_cancelar
和R.drawable.ic_add
资源。如果按钮在这两个drawable之间切换,那么您至少知道该按钮实际上正在接收onClick。
请注意,如果getMovieCategory
的值在每次点击时都没有变化,那么您的按钮将始终只执行其中一组onClick操作,并且它看起来就像什么都没有一样?&#39;发生了。
如果它像我所描述的那样适合你,那么你就在路上;)
buttonCategoryMovie.setText("MOVIES");
buttonCategoryMovie.setTextColor(Color.parseColor("#ffffff"));
buttonCategoryMovie.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (getMovieCategory.equals("movies")) {
getMoviesCategory = "not movies"; // this is here just to test
buttonCategoryMovie.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_cancelar, 0, 0, 0);
String movies = "movies";
dbh.updateCategoryMovies(birthdayId, movies);
} else {
getMoviesCategory = "movies"; // this is here just to test
buttonCategoryMovie.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_add, 0, 0, 0);
dbh.deleteMovies(getMovieCategory);
}
}
});