2015-11-17 2 views
0

У меня не было этой проблемы до сих пор. Я не знаю, в чем проблема, потому что в том же макете у меня есть несколько кнопок и только кнопки, которые находятся в LinearLayout, не будут отвечать.Android: метод OnClick для кнопки не отвечает

Это расположение, где мои кнопки не будут реагировать OnClick (отредактирован):

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

Опубликовать код мероприятия. –

+0

Оба слушателя не работают? –

+0

Здесь размещен полный исходный код активности. –

ответ

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); 
     } 
    } 
}); 

EDIT 1: я по ошибке оставил свой String movies = "movies" и добавили его обратно в случае, если вы только собираетесь использовать эту строку один раз, чтобы передать его в качестве параметра для dbh.updateCategoryMovies(birthdayId, movies), то вы могли бы просто. позвонить dbh.updateCategoryMovies(birthdayId, "movies") и удалить String movies = "movies"

EDIT 2: не видя весь исходный код, я не знаю, если вы на все изменения значения getMovieCategory где-то. Если нет, то приведенный ниже образец изменит его при каждом нажатии кнопки (после запуска приложения для проверки образца ваш buttonCategoryMovie будет общей кнопкой; после того, как вы нажмете кнопку, он должен переключиться между показом вашего R.drawable.ic_cancelar и R.drawable.ic_add ресурсов. Если кнопки переключают между этими двумя вводимыми коэффициентом, то по крайней мере знать, что кнопка на самом деле получающего OnClick.

Помните, что, если значение getMovieCategory не меняется на каждый клике, ваша кнопка будет всегда выполняйте только один из наборов действий onClick, и это будет выглядеть так, как будто ничего не происходит.

Если это работает для вас, как я описал, то вы уже в пути;)

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); 
     } 
    } 
}); 
+0

Я решил проблему с получением кнопок вне линейных макетов, но вы код помогли мне организовать мой код, чтобы быть разумным. У меня есть еще одна проблема с базой данных sql. Является ли sql знакомым для вас? –

+0

Рад, что это помогло и спасибо! :). Правила здесь не одобряют отклонение от темы исходного вопроса, поэтому лучше всего сделать для вашей проблемы sql, чтобы опубликовать новый вопрос. Ура! – mjp66

1

Попробуйте изменить android:visibility="gone" на номер android:visibility="visible" в вашем LinearLayout.

И снова добавить android:clickable="true" к вашему LinearLayout

+0

Я изменил это программно, когда какой-то код выполняется, потому что мне не нужны эти кнопки, чтобы быть видимыми, когда пользователь выбрал кнопку редактирования. –

+0

@DusanDimitrijevic Затем обработайте ваши слушатели onClick вне операторов if, предложенных ** MFP ** –

2

попробовать путем обработки setOnClickListener из СТОРОНЫ если условие.

+0

Но мне нужно это в условии if, потому что у меня есть два оператора, где я хочу что-то сделать, если одно условие истинно и второе, где я хочу к чему-то еще с onClickListener. –

+2

Вы должны использовать тот же прослушиватель и проверить, что делать ** внутри ** ваш метод 'onClick'. –

+0

Вы правы. Я постараюсь сделать это сейчас. –

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