点击按钮时,我在注册电话时遇到问题。
我有2个EditTexts,一个Button和一个CheckBox。我想在按下Button时调用onClick()函数。不幸的是,它只发生在按下CheckBox时,但它不是正确的ID,所以我很困惑。
这是java代码:
Button connect = (Button) findViewById(R.id.connectToServer);
connect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
....
}
如您所见,我寻找id“connectToServer”。
这是我的.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:background="#ffb6b6b6"
android:textColor="#ffffffff" android:padding="2px" android:text="Settings" />
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:padding="13px">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:textSize="25px"
android:textColor="#ffffffff" android:text="Set server settings" />
<TableLayout android:layout_marginTop="10px"
android:stretchColumns="1" android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TableRow>
<TextView android:text="IP address:" />
<EditText android:id="@+id/serverIP" android:maxLength="15" />
</TableRow>
<TableRow>
<TextView android:layout_marginTop="4px" android:text="Port:" />
<EditText android:id="@+id/serverPort" android:maxLength="15" />
</TableRow>
</TableLayout>
<LinearLayout android:layout_width="fill_parent"
android:layout_marginTop="10px" android:orientation="horizontal"
android:layout_height="fill_parent" android:gravity="center">
<Button android:text="Connect" android:id="@+id/connectToServer"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>
</LinearLayout>
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:background="#ffb6b6b6"
android:textColor="#ffffffff" android:padding="2px"
android:layout_marginTop="10px" android:text="Availability" />
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:padding="13px">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:textSize="25px"
android:textColor="#ffffffff" android:text="Set device available" />
<TableLayout android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_weight="1">
<TableRow>
<TextView android:layout_marginTop="10px"
android:layout_width="wrap_content" android:layout_height="fill_parent"
android:layout_weight="1"
android:text="Uncheck to disallow anyone from\nremotely connecting to the device." />
<CheckBox android:id="@+id/checkbox" android:gravity="right"
android:checked="true" android:layout_weight="1"
android:layout_width="wrap_content" android:layout_height="fill_parent" />
</TableRow>
</TableLayout>
</LinearLayout>
</LinearLayout>
我认为重要的一句是:
<Button android:text="Connect" android:id="@+id/connectToServer"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
但只有在选中或取消选中CheckBox按钮时才会调用代码。我不确定为什么会这样。
非常感谢!
答案 0 :(得分:4)
试试这个,
Button connect = (Button) findViewById(R.id.connectToServer);
connect.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
答案 1 :(得分:3)
有更简单的方法来处理点击事件
1)添加android:onClick以分配类似
的功能<Button android:id="@+id/connectToServer"
android:text="Connect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick_connectToServer"
/>
2)在你的活动中实施onClick
public void onClick_connectToServer(View v) {
String tag = "" + v.getTag();
// here you can handle the action
}
在这种情况下,您不需要显式添加onClickListener。
社交编码@ AspiroTV
答案 2 :(得分:1)
我遇到了同样的问题。我更改了XML中的按钮顺序,onClickListener开始调用错误的事件。该视图从设备看起来是正确的,但R.java中的视图ID不正确。
使用Eclipse:我只做Project-&gt; Clean ...
事件侦听器开始正常工作。