您好,这是我的xml文件
<RelativeLayout
android:id="@+id/tutorialBox"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="15dip"
android:paddingBottom="15dip">
<Button
android:id="@+id/closeBen"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/CloseBenny"
android:layout_alignBottom="@+id/bennybox"
android:layout_alignEnd="@+id/chatbub" />
</RelativeLayout>
我为它做了一个点击监听器
final Button closeBt = (Button) findViewById(R.id.closeBen);
closeBt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
closeBt.setText("Im a button");
}
});
由于某些原因,当我点击此按钮时没有任何反应它看起来没有被点击。 当我从实际布局中取出按钮时一切正常 有什么建议吗?
答案 0 :(得分:0)
而不是将onClick属性添加到xml中的按钮标记。
<Button
android:id="@+id/closeBen"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/CloseBenny"
android:onClick = "close_clicked"
android:layout_alignBottom="@+id/bennybox"
android:layout_alignEnd="@+id/chatbub" />
然后在Main Activity中创建一个像这样的新方法。
public void close_clicked (View v){
// Your code
}
无需添加点击列表器。
答案 1 :(得分:0)
你的RelativeLayout
看起来不太好,是你的主要容器吗?
也许这样试试
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<Button
android:id="@+id/closeBen"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/CloseBenny"
android:layout_alignBottom="@+id/bennybox"
android:layout_alignEnd="@+id/chatbub" />
</RelativeLayout>
一个好的做法是全局声明你的小部件然后在OnCreate
public class Foo extends AppCompatActivity {
private Button closeBenny;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
closeBenny = (Button)findViewById(R.id.closeBen);
closeBenny.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
closeBenny.setText("Im a button");
}
});
}
}