Android 安卓:按钮的OnClick方法不';不回答

Android 安卓:按钮的OnClick方法不';不回答,android,Android,直到现在我才有这个问题。我不知道这里有什么问题,因为在同一个布局中,我有几个按钮,只有LinearLayout中的按钮不会响应 这是我的按钮在单击(编辑)时不响应的布局。: <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scrollView1" an

直到现在我才有这个问题。我不知道这里有什么问题,因为在同一个布局中,我有几个按钮,只有LinearLayout中的按钮不会响应

这是我的按钮在单击(编辑)时不响应的布局。

    <?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>

在这里,除了onClick,一切都正常。我没有错。单击“我的按钮”时没有响应。

请尝试在线性布局中将
android:visibility=“gone”
更改为
android:visibility=“visible”


然后再次将
android:clickable=“true”
添加到线性布局中

尝试将线性布局中的
android:visibility=“gone”
更改为
android:visibility=“visible”


然后再次将
android:clickable=“true”
添加到您的线性布局中

尝试将setOnClickListener置于if条件之外。

尝试将setOnClickListener置于if条件之外。

您在编码时存在大量冗余,并有引入错误的风险,其中一些错误可能不会立即显现出来。下面是您发布的代码示例的更精简、更清晰的版本,使用一个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
的值。如果没有,那么下面的示例将在每次单击按钮时更改它(一旦你启动应用程序测试样本,你的
按钮CategoryMovie
将是一个通用按钮;一旦你开始点击该按钮,它应该在显示你的
R.drawable.ic_cancelar
R.drawable.ic_添加
资源之间切换。如果该按钮在这两个drawable之间切换,那么你至少知道utton实际上正在接收onClick

请记住,如果每次单击时
getMovieCategory
的值都没有改变,则您的按钮将始终只执行一组onClick操作,看起来什么都没有发生

如果它像我描述的那样对你有效,那么你就走在路上了;)


。您正在使用大量冗余进行编码,并有引入错误的风险,其中一些错误可能不会立即显现。下面是您发布的代码示例的更精简、更清晰的版本,使用一个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
的值。如果不是,则下面的示例将在每次单击按钮时更改它(一旦你启动应用程序测试样本,你的
按钮CategoryMovie
将是一个通用按钮;一旦你开始点击该按钮,它应该在显示你的
R.drawable.ic_cancelar
R.drawable.ic_添加
资源之间切换。如果该按钮在这两个drawable之间切换,那么你至少知道utton实际上正在接收onClick

请记住,如果每次单击时
getMovieCategory
的值都没有改变,则您的按钮将始终只执行一组onClick操作,看起来什么都没有发生

如果它像我描述的那样对你有效,那么你就走在路上了;)



发布活动的代码。两个侦听器都不工作?在此处发布活动的完整源代码。建议:将android:weight\u sum=3添加到线性布局中。伙计们,这仍然不工作,我的意思是按钮在单击时没有响应,没有错误。我已经尝试了您建议我的所有内容。在if条件旁边设置onClickListener,设置ting linearLayouts clickable state为true,但注意。发布活动的代码。两个侦听器都不工作?在此处发布活动的完整源代码。建议:将android:weight\u sum=3添加到你的linearLayouts。伙计们,这仍然不工作,我的意思是按钮在单击时没有响应,没有错误。我已经尝试了你建议我的一切。在if条件旁边设置onClickListener,将linearLayouts clickable state设置为true,但注意。在执行某些代码时,我以编程方式更改了该设置,因为当用户选择编辑按钮时,我不需要这些按钮可见。@DusanDimitrijevic然后按照M的建议在if语句之外处理onClick侦听器FPI在执行某些代码时以编程方式更改了这一点,因为当用户选择“编辑”按钮时,我不需要这些按钮可见。@DusanDimitrijevic然后按照MFPBC的建议在if语句之外处理onClick侦听器,但我需要在if条件下使用它,因为我有两条语句,其中一条条件下我想执行某些操作是true,第二个是我想用onClickListener做其他事情的地方。你应该使用同一个侦听器,检查你的
onClick
方法内部要做什么。但是我需要在if条件下使用它,因为我有两个语句,其中一个条件为true,我想做一些事情;第二个是我想用onClickListener做其他事情的地方应该使用同一个监听器,并检查您的
onClick
方法内部的操作。我已经解决了获取按钮o的问题
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);
        }
    }
});