我知道这是基本的东西,但我无法理解。这是我的代码:
public class test extends Activity{
private static final String TAG = "test";
private Button Test;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.v(TAG,"onCreate is called.");
this.setContentView(R.layout.main);
Test= (Button)this.findViewById(R.id.Test);
Test.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.v(TAG, "onClick Entered.");
// Perform action on click
}
});
setContentView(R.layout.main);
}
}
我可以看到第一个日志“OnCreate”,但按钮点击事件监听器似乎没有 工作,因为我看不到“OnClick Entered”。我哪里做错了?
由于
答案 0 :(得分:5)
您正在调用setContentView
两次,这是您在设置点击侦听器后第二次。这意味着您添加侦听器的视图不再可见,它将替换为视图的其他实例。删除第二个setContentView
。
答案 1 :(得分:1)
一些评论/事情要尝试:
您的命名惯例是向后的。您应该在标题案例中命名您的活动,在驼峰案例中命名您的变量(例如,您的活动“test.java”应为Test.java,您的Button Test
应为Button test
)。这不是你的问题,而是要记住的事情。
您正在拨打super.onCreate()
两次。我真的不知道它有什么影响,但它不应该存在。您还要拨打setContentView()
两次。一次调用onCreate,一次调用setContentView就是你应该拥有的。编辑:显然是三次,根据Jems的评论。
在main.xml中,你有一个id为test的Button吗? (即android:id="@+id/test"
)
答案 2 :(得分:0)
showTrafficButton在哪里定义?你确定不应该这样:
Button showTrafficButton = (Button)this.findViewById(R.id.Test);