【问题标题】:Android OnClickListener not firing for button on separate LayoutAndroid OnClickListener 未触发单独布局上的按钮
【发布时间】:2012-11-16 07:20:13
【问题描述】:

我有两种不同的布局。一个是在 Activity 启动时加载,另一个是在运行一些检查并创建自定义对话框后加载。对话框中有一个按钮来触发,此时,onclick 有一条 Toast 消息,因此我可以确认该按钮已被单击。不幸的是,单击按钮时我无法得到任何响应。我已经在网上找遍了,但我找不到我所缺少的东西。

public class myactivity extends Activity{
    Dialog accesspopup;    

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_myactivity); 

        View inflatedView = getLayoutInflater().inflate(R.layout.dialoglayout, null);
        final Button cabtn = (Button)inflatedView.findViewById(R.id.cb);
        cabtn.setOnClickListener(cListener);
    }

    private OnClickListener cListener = new OnClickListener() {
        public void onClick(View v) {
            //Log.d("HiThereActivity", "THIS IS DEBUG OUTPUT TO LOGCAT");
            Toast.makeText(myactivity.this, "The Start button was clicked.", Toast.LENGTH_LONG).show();
        }
    };

public void showPopup(){
    accesspopup = new Dialog(myactivity.this);
    accesspopup.setContentView(R.layout.pop_window);
    accesspopup.setCancelable(false);
    accesspopup.setTitle("Window Title");
    accesspopup.show();
}

【问题讨论】:

  • 您的按钮不在屏幕上。您不会对膨胀的视图做任何事情。
  • 创建 AlertDialog.Builder 时应该充气!
  • 那么我会在创建 Popup 时放大视图吗? *添加在上面的弹出项中。

标签: android onclicklistener buttonclick


【解决方案1】:

我进行了更多搜索,发现我需要在用于构建和显示对话框的方法中创建 OnClickListener,而不是在 OnCreate 中。

【讨论】:

  • 你可以在这里发布答案吗?我觉得我遇到了同样的问题,但不知道如何解决。
【解决方案2】:

这样用……

public class myactivity extends Activity{

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_myactivity); 

        View inflatedView = getLayoutInflater().inflate(R.layout.dialoglayout, null);
        final Button cabtn = (Button)inflatedView.findViewById(R.id.cb);

        cabtn.setOnClickListener(new OnClickListener()
       {

                public void onClick(View v) 
                {
                       Toast.makeText(myactivity.this, "The Start button was clicked.", Toast.LENGTH_LONG).show();
                }
       });


}

【讨论】:

    【解决方案3】:

    可能仍然是您的 R.layout.activity_myactivity 是您活动中的可控 Contentview。

    所以你必须将你的新布局定义为setContentView.

    或者你提到它是一个Dialog 框。

    因此您可以为如下所示的对话框添加内容视图,

    Dialog d = new Dialog (this);
    d.setContentView(your inflated view);
    

    【讨论】:

      猜你喜欢
      • 2016-07-06
      • 2018-07-21
      • 2023-03-27
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多