0

我有这个应用程序,当你登录时,你会看到一个列表,比如名字。我也有一个添加、更新和删除按钮。当我点击编辑按钮时,它将进入编辑页面,您可以在那里编辑名称。现在,当您点击更新按钮时,我有一个 AlertDialog,它将再次询问用户的用户名和密码。这是我制作的代码:

public void btn_add_update_click(View v){
    hideKeyboard();
    final String username = getIntent().getStringExtra("USERNAME");
    final String str_sitename = this.edt_sitename.getText().toString();
    String str_username = this.edt_username.getText().toString();
    String str_password = this.edt_password.getText().toString();
    LayoutInflater li = LayoutInflater.from(context);
    View prompt = li.inflate(R.layout.prompts, null);
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
    alertDialogBuilder.setView(prompt);
    final EditText user = (EditText) prompt.findViewById(R.id.loginEmail);
    final EditText pass = (EditText) prompt.findViewById(R.id.loginPassword);
    final TextView msg = (TextView) prompt.findViewById(R.id.login_error);
    final String password = pass.getText().toString();
    user.setText(getIntent().getStringExtra("USERNAME"));


    if (str_sitename.equals("")){
        //edt_sitename.requestFocus();
        show_mesg("Please insert sitename.");
    }else if (str_username.equals("")){
        //edt_username.requestFocus();
        show_mesg("Please insert username.");
    }else if (str_password.equals("")){
        //edt_password.requestFocus();
        show_mesg("Please insert password.");
    }else{
        if (selected_website!=null){
            selected_website.setUser(username);
            selected_website.setSitename(str_sitename);
            selected_website.setUsername(str_username);
            selected_website.setPassword(str_password);
                alertDialogBuilder.setCancelable(false)
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {    
                        DBAdapter dbUser = new DBAdapter(PasswordActivity.this);
                        dbUser.open();
                        if(dbUser.Login(username, password))
                        {
                                datasource.updateWebsite(selected_website);
                                show_mesg(str_sitename + " updated.");
                                hideKeyboard();
                                selected_website = null;
                                show_list_layout(); 
                            }
                        else{
                            msg.setText("Username or Password is not correct.");
                            }
                        }
                })
                .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();

                    }
                });
                AlertDialog alertDialog = alertDialogBuilder.create();
                alertDialog.show(); 
        }

        else{
            datasource.addWebsite(username, str_sitename,str_username,str_password);
            hideKeyboard();
            show_mesg(str_sitename + " added.");
            selected_website = null;
            show_add_layout();
        }
    }
}

但是当我运行它时,它不起作用。确定和取消按钮未显示。对此有何建议?

4

1 回答 1

1

首先是您确定您的控件即将进入更新状态吗?如果是这样,那么在创建警报对话框时,您的代码似乎没有任何缺陷。无论如何,如果您确定您的控件处于更新状态,那么值得尝试一下。

 void showUpdateDialog(){
      AlertDialog.Builder updateDialog  = new AlertDialog.Builder(YourClassName.this);
      updateDialog.setTitle("Update Dialog");
      updateDialog.setCancelable(false);

    LayoutInflater layoutInflater  = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

  View inflatingView=layoutInflater.inflate(R.layout.updatelayout,null);

      EditText user = (EditText) inflatingView.findViewById(R.id.loginEmail);
      EditText pass = (EditText) inflatingView.findViewById(R.id.loginPassword);

      // More views here.......

 updateDialog.setPositiveButton("OK", new DialogInterface.OnClickListener(){

   @Override
   public void onClick(DialogInterface arg0, int arg1) {
    // TODO Auto-generated method stub

   }});

  updateDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){

   @Override
   public void onClick(DialogInterface arg0, int arg1) {
    // TODO Auto-generated method stub

   }});

        updateDialog.setView(inflatingView);
        updateDialog.show();
    }

showUpdateDialog()在您的活动中单击更新按钮时调用此方法。如果您仍然找不到正面和负面按钮,请创建自己的按钮。那么你就不需要依赖系统的正负按钮了。在您的 updatelayout.xml 中添加两个额外的按钮,并在您的 showUpdateDialog() 方法中对其进行如下编码,然后对这些按钮执行任何您想要的操作。

Button yesButton = (Button)view.findViewById(R.id.positiveButton);
  yesButton.setOnClickListener(new Button.OnClickListener(){

    @Override
       public void onClick(View arg0) {
        // TODO Auto-generated method stub
        Toast.makeText(getApplicationContext(), " Yes Button Is Pressed", Toast.LENGTH_LONG).show();
       }});
于 2013-01-31T04:25:37.690 回答