4

У меня есть кнопка, когда я нажимаю диалоговое окно. Проблема в том, что setOnClickListener не отвечает на мою кнопку.Кнопка OnClickListener не работает

Вот мой Java-код:

Button b1 = (Button) findViewById(R.id.button1); 
    b1.setOnClickListener(usage); 

    b2 = (Button) findViewById(R.id.button2); 
    b2.setOnClickListener(price); 

    b3 = (Button) findViewById(R.id.button3); 
    b3.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      System.out.println("Button3"); 
      mainDialog3 = new Dialog(Advice.this); 
      mainDialog3.setContentView(R.layout.fuel); 
      mainDialog3.setCancelable(true); 

      mainDialog3.show(); 
      Window window = mainDialog3.getWindow(); 
      window.setLayout(LayoutParams.FILL_PARENT, 
        LayoutParams.WRAP_CONTENT); 

     } 
    }); 


private View.OnClickListener usage = new View.OnClickListener() { 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     System.out.println("Button1"); 
     Toast.makeText(getApplicationContext(), "Button 1", 
       Toast.LENGTH_LONG).show(); 
     mainDialog1 = new Dialog(Advice.this); 
     mainDialog1.setContentView(R.layout.usage); 
     mainDialog1.setCancelable(true); 

     mainDialog1.show(); 
     Window window = mainDialog1.getWindow(); 
     window.setLayout(LayoutParams.FILL_PARENT, 
       LayoutParams.WRAP_CONTENT); 

    } 
}; 

private View.OnClickListener price = new View.OnClickListener() { 
    public void onClick(View v) { 
     System.out.println("Button2"); 
     mainDialog2 = new Dialog(Advice.this); 
     mainDialog2.setContentView(R.layout.price); 
     mainDialog2.setCancelable(true); 

     mainDialog2.show(); 
     Window window = mainDialog2.getWindow(); 
     window.setLayout(LayoutParams.FILL_PARENT, 
       LayoutParams.WRAP_CONTENT); 

    } 

}; 

Проблема с кнопкой 1 (b1). Остальные кнопки (b2, b3) работа совершенно в хорошем состоянии. Вот мой XML:

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_alignRight="@+id/button7" 
    android:text="Edit" /> 

<Button 
    android:id="@+id/button2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/button3" 
    android:layout_alignLeft="@+id/button1" 
    android:text="Edit" /> 

<Button 
    android:id="@+id/button3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/textView8" 
    android:layout_alignLeft="@+id/button2" 
    android:text="Edit" /> 
+1

Глупый вопрос, но вы уверены, что кнопка, которую вы нажимаете, - button1? Кажется, у вас есть несколько кнопок с одним и тем же текстом («Изменить») в RelativeLayout. Возможно ли, что другая кнопка сидит поверх того, что, по вашему мнению, является кнопкой1, тем самым не позволяя ей щелкнуть? – brianestey

+0

да, я не проверял, что никакая другая кнопка не перекрывает кнопку. Вместо этого я добавил новую кнопку и проверил, но все тот же вопрос. – Droid

+0

Эй, большое спасибо, я не знаю, где была проблема, но теперь это сработало. – Droid

ответ

1

Вам не нужно настраивать прослушиватель кликов вручную в коде. Самый простой способ сделать это - добавить обратный вызов в XML.

Как это:

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_alignRight="@+id/button7" 
    android:onClick="foo" 
    android:text="Edit" /> 

Если вы используете затмение с андроид инструментов, вы можете установить это свойство непосредственно в редакторе XML. Затем вы определяете функцию в своем коде, названном после свойства Click, и она будет вызываться автоматически.

public void foo(View oView) 
{ 
    Button cklicked ... 
} 

Вы также можете установить щелчок слушателя динамически, но это нужно только если вы создаете кнопки на лету, как это:

ImageButton button = (ImageButton) findViewById(R.id.list_manager_add); 
    button.setOnClickListener(new OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      button pressed... 
     } 
    }); 
-8

попробовать b1.setOnClickListener(usage); вместо b1.setOnClickListener(usage); в вашем коде она будет работать ..brother

+2

В чем разница? –

+0

Попробуйте поесть вместо еды в рот? –