Android OnClickListener未为单独布局上的按钮触发

Android OnClickListener未为单独布局上的按钮触发,android,onclicklistener,buttonclick,Android,Onclicklistener,Buttonclick,我有两种不同的布局。一个是在活动开始时加载,另一个是在运行一些检查并创建自定义对话框后加载。对话框中有一个按钮要触发,此时,onclick有一条Toast消息,因此我可以确认按钮已被单击。不幸的是,当点击按钮时,我无法得到任何响应。我已经浏览了所有的网页,我不能完全找到我缺少的东西 public class myactivity extends Activity{ Dialog accesspopup; @Override public void onCreat

我有两种不同的布局。一个是在活动开始时加载,另一个是在运行一些检查并创建自定义对话框后加载。对话框中有一个按钮要触发,此时,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();
}

可能仍然是您的R.layout.activity\u myactivity是活动中可控制的内容视图

因此,您必须将新布局定义为
setContentView。

或者您提到它是一个
对话框

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

Dialog d = new Dialog (this);
d.setContentView(your inflated view);
用这种方式

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();
                }
       });


}

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

您的按钮不在屏幕上。膨胀的视图没有任何作用。创建AlertDialog.Builder时应该膨胀!那么,当我将弹出窗口装入板条箱时,是否会将视图充气*添加到上面的弹出项中。你能在这里发布答案吗?我觉得我在做和你一样的事情,但不知道如何解决它。