3

我在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=(按钮) 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);
        }
    });
4

3 回答 3

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;
            }
        }
    }
  }
于 2013-01-12T04:41:02.020 回答
0
Button btn=(Button) findViewById(R.id.button1); 

您已将 btn 设置为 button1,因此您只在该按钮上附加了一个侦听器,这就是为什么您的另一个按钮没有做任何事情的原因。

于 2013-01-12T04:38:55.253 回答
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();
    }
});
于 2013-01-12T06:06:13.253 回答