android按钮事件监听器不起作用

时间:2011-01-24 21:43:42

标签: android

我知道这是基本的东西,但我无法理解。这是我的代码:

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”。我哪里做错了?

由于

3 个答案:

答案 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);