问题
I have a button, when I click a dialog box appears. The problem is, the setOnClickListener
is not responding to my button.
Here is my Java code:
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);
}
};
The problem is with button 1 (b1
). The rest of the buttons (b2
, b3
) work perfectly fine. Here is my 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:
You don't need to set the click listener manually in the code. The easiest way, to do this is to add the callback in the XML.
Like this:
<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" />
If you use eclipse with the android tools, you can set this property directly in the XML editor. Then you define a function in your code named after the Click property and it will be called automatically.
public void foo(View oView)
{
Button cklicked ...
}
You can also set a click listener dynamically, but this you need only if you create buttons on the fly like this:
ImageButton button = (ImageButton) findViewById(R.id.list_manager_add);
button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
button pressed...
}
});
回答2:
try b1.setOnClickListener(usage);
instead of b1.setOnClickListener(usage);
in your code it will work..brother
来源:https://stackoverflow.com/questions/17335135/button-onclicklistener-not-working