android按钮onClick不做任何事情

时间:2017-09-07 11:21:19

标签: java android button

我正在尝试为自定义willShow上的viewDidLoad实施onClick功能,但当我点击ButtonDialog时,没有任何结果。{1} }

  

MainActivity.java:

Button

addDialog.java:

butEditAdd

感谢您的帮助!

6 个答案:

答案 0 :(得分:2)

Dialog片段具有单独的生命周期集。如果要创建类adddialog,则扩展对话框片段并在adddialog的oncreate中使用setcontent视图。

如果你想创建简单的对话框,请尝试这行代码。这将解决你的问题。

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            final Dialog addDialog = new Dialog(this);
            addDialog.setContentView(R.layout.dialogedit);
            final Button butEditAdd =(Button)addDialog.findViewById(R.id.btn);
            //final Button butEditAdd=addDialog.getAdd();
            addDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
            butEditAdd.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //addDialog.dismiss();
                    Toast.makeText(getApplicationContext(),"It's working", Toast.LENGTH_SHORT).show();
                }
            });
            addDialog.show();
        }
    });

答案 1 :(得分:2)

将AddDialog更改为Dialog

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            final Dialog addDialog = new Dialog(MainActivity.this);
            addDialog.setContentView(R.layout.dialogedit);
            final Button butEditAdd =(Button)addDialog.findViewById(R.id.buttonAdd);
            addDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
            dialog.setCanceledOnTouchOutside(true);
            butEditAdd.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //addDialog.dismiss();
                    Toast.makeText(getApplicationContext(),"It's working",Toast.LENGTH_SHORT).show();
               }
            });
            addDialog.show();
        }
    });

答案 2 :(得分:1)

你需要这样吗

 final Button butEditAdd =(Button)addDialog.findViewById(R.id.buttonAdd);

答案 3 :(得分:0)

使用this代替getApplicationContext()

答案 4 :(得分:0)

您应首先对布局进行充气,然后按ID查找视图。

LayoutInflater inflater = LayoutInflater.from(this);
View dialogView = inflater.inflate(R.layout.dialogedit, null);
final Button butEditAdd =(Button) dialogView.findViewById(R.id.buttonAdd);

.............

butEditAdd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           //do something
       }
    });

这应该有用。

答案 5 :(得分:0)

从对话框 onCreate()中删除 setContentView(R.layout.dialogedit)

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

你的其余代码工作正常。