【问题标题】:why the onClickListener dont work?为什么 onClickListener 不起作用?
【发布时间】:2014-07-18 05:49:58
【问题描述】:

我编写了这段代码,我想在用户决定退出我的应用程序时使用它。 当我激活它时,Eclipse 告诉我“是”按钮有错误。这行是有问题的:yes.setOnClickListener(new View.OnClickListener() { 这是完整的代码: @Override public void onBackPressed() { // TODO Auto-generated method stub super.onBackPressed(); final Dialog exitDialog = new Dialog(this); exitDialog.setTitle("Exit"); exitDialog.setContentView(R.layout.exit_dialog);

    yes.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            exitDialog.dismiss();
            finish();
        }
    });

    exitDialog.show();
}

【问题讨论】:

  • R.layout.exit_dialog 中的“是”按钮在哪里?

标签: eclipse button view onclick onclicklistener


【解决方案1】:

有两个可能的问题 第一个是因为 this 关键字,它引用了当前的 Dialog 类,所以给你的 ClassName.this

第二个因为final关键字去掉final关键字,给onCreate(Bundle SavedInstances) method中的监听器

【讨论】:

    【解决方案2】:

    你是如何初始化按钮的?推荐的方式是:

    public void onBackPressed() {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            builder.setMessage(R.string.dialog_quit)
                   .setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                           finish();
                       }
                   })
                   .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
    
                       }
                   });
    
    Dialog dialog =  builder.create();
    dialog.show();
    }
    

    您也可以参考Android dialog guide

    【讨论】:

      【解决方案3】:

      你应该使用

      button.addActionListener(new ActionListener() {
      
                  @Override
                  public void actionPerformed(ActionEvent e) {
                      exitDialog.dismiss();
              finish()
                  }
              });
      

      而不是 OnClickListener。 另一个(更好的)选择是使用 JOptionPane.showConfirmDialog(...);

      【讨论】:

      • eclipse 无法识别此 ActionListener... 无法导入它或其他任何东西
      • 监听器用于 Swing,而不是 Android。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多