无法为android中的多个按钮调用多个onclick事件

时间:2013-01-12 04:35:55

标签: android button

我在android中有小查询。 我有一个活动,它有3个按钮,在一个按钮上单击我显示AlertDialog框,在第二个按钮单击我显示列表对话框和在第三个按钮单击我切换Android中的OnScreen键板。

我的问题是我能够调用第一个按钮,当我点击第二个和第三个按钮时它们没有响应,而且我通过在相应的单击事件功能上插入断点来检查,控制流程根本没有在功能内部。简单的是,它会跳过乐趣并进入主OnCreate函数的末尾。

这是我用于前2个按钮的代码......

        Button btn=(Button) findViewById(R.id.button1);
    btn.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            // TODO Auto-generated method stub
            ShowListDialog();
        }
    });

    btn=(Button) findViewById(R.id.btnShowList);
    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            ShowOneDialog();
        }
    });

我正在调用函数ShowOneDialog()和ShowListDialog()函数,希望不需要函数 对于第三个按钮点击事件如下...

btn =(Button)findViewById(R.id.btnToggle);         btn.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            InputMethodManager inmgr=(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            inmgr.toggleSoftInput(0, 0);
        }
    });

3 个答案:

答案 0 :(得分:1)

创建一个单独的OnClickListener并将此监听器添加到所有按钮:

 Button btn=(Button) findViewById(R.id.button1); 
 Button btn1=(Button) findViewById(R.id.btnShowList);
 ....

 btn.setOnClickListener(buttonclickhandler);
 btn1.setOnClickListener(buttonclickhandler);
 ....

 View.OnClickListener buttonclickhandler = new View.OnClickListener() {
    public void onClick(View v) {
       @Override
        public void onClick(View v)
        {
            // TODO Auto-generated method stub
            switch(v.getId())
            {
            case R.id.button1:ShowListDialog();
                break;
            case R.id.btnShowList: ShowOneDialog();
            break;
            }
        }
    }
  }

答案 1 :(得分:0)

Button btn=(Button) findViewById(R.id.button1); 

您已将btn设置为button1,因此您只将一个监听器附加到THAT按钮,这就是您的其他按钮没有执行任何操作的原因。

答案 2 :(得分:0)

试试这段代码

Button btn1=(Button)findViewById(R.id.button1);
btn1.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        // TODO Auto-generated method stub
        ShowListDialog();
    }
});

Button btn2 = (Button)findViewById(R.id.btnShowList);
btn2.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        ShowOneDialog();
    }
});