3

編集ボタンにログインを追加しようとしました。私がやりたいのは、ユーザーが編集するアイテムを選択し、編集ボタンを押すと、ポップアップが表示され、ユーザーのユーザー名とパスワードを尋ねることです。ログインダイアログを作成しようとしましたが、失敗し続けます。

これが私のコードです:

public void btn_edit_click(View v){
        LayoutInflater li = LayoutInflater.from(context);
        View prompt = li.inflate(R.layout.prompts, null);
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
        alertDialogBuilder.setView(prompt);
        final String username = getIntent().getStringExtra("USERNAME");
        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(this.selected_website != null){
            alertDialogBuilder.setCancelable(false)
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {   
                    DBAdapter dbUser = new DBAdapter(PasswordActivity.this);
                    dbUser.open();
                    if(dbUser.Login(username, password))
                    {
                        show_add_layout();

                    }
                    else
                    {
                        msg.setText("Username or Password is incorrect");
                    }
                }
                });

                    alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();

                        }
                    });
                    alertDialogBuilder.show();  
                    }                   
                    else{
                        show_mesg("Please select item to edit.");
                    }
    }

[OK]ボタンをクリックすると、「ユーザー名またはパスワードが正しくありません」というメッセージが表示されます。しかし、私は正しいユーザー名とパスワードを入力しました。これについて何か助けはありますか?

4

2 に答える 2

4

1時間後、私はなんとか自分の問題を解決することができました。ですから、私はこの答えを共有したかったので、誰かが私が少し前に持っていたような問題に遭遇した場合、彼らはこれを良い参考として使うことができます。

私がしたことは、Loginクラスのコードを使用してみたことです。しかし、私はもうユーザー名を尋ねませんでした。私が尋ねたのはパスワードだけでした。ただし、ユーザー名については、前回のログインからインテントを取得します。つまり、ユーザー名「john316」でログインし、パスワードは「123abc」であると、メインクラスにリダイレクトされます。そこでリストビューでアイテムを選択し、[編集]をクリックすると、確認のためにパスワードを要求するポップアップが表示されます。ただし、どのパスワードも機能しません。dbからパスワードを呼び出し、ログインしたユーザー名( "john316")が正しい場合は、編集クラスにリダイレクトされます。間違っている場合は、「パスワードが正しくありません」と表示されます。そのページに移動できなくなります。この説明を短くするために、コードは次のとおりです。

public void btn_edit_click(View v){
    LayoutInflater li = LayoutInflater.from(context);
    View prompt = li.inflate(R.layout.prompts, null);
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
    alertDialogBuilder.setView(prompt);
    final String username = getIntent().getStringExtra("USERNAME");
    final EditText pass = (EditText) prompt.findViewById(R.id.loginPassword);
    final TextView msg = (TextView) prompt.findViewById(R.id.login_error);

    if(this.selected_website != null){
        alertDialogBuilder.setCancelable(false)
        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int id) {   
                String password = pass.getText().toString();

                try{
                    if(username.equals(getIntent().getStringExtra("USERNAME")) && password.length() > 0)
                    {
                        DBAdapter dbUser = new DBAdapter(PasswordActivity.this);
                        dbUser.open();

                        if(dbUser.Login(username, password))
                        {
                            show_add_layout();
                        }else{
                            msg.setText("Password is incorrect");
                        }
                        dbUser.close();
                    }

                }catch(Exception e)
                {
                    Toast.makeText(PasswordActivity.this,e.getMessage(), Toast.LENGTH_LONG).show();
                }
            }
            });

                alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int id) {
                        dialog.cancel();

                    }
                });
                alertDialogBuilder.show();  
                }                   
                else{
                    show_mesg("Please select item to edit.");
                }
}

そして、それはそれがどのように機能するかです。私の質問に答えてくれて少し助けてくれた人々に感謝します。これが他の人にも役立つことを願っています。みんな、ありがとう!

于 2013-02-01T04:45:44.437 に答える
0

これを使用しているため、passworのようにユーザー名を正しく取得していないようです。

  final String username = getIntent().getStringExtra("USERNAME");

ただし、userEmail用に提出されたDialog EditTextに、パスワードなどのユーザー名を入力しています。入力されたuserNameを取得するにはこれを使用する必要があります

final String username  = user.getText().toString();

また、DBでチェックする前に、ユーザー名、Passowrdのnull、空を検証する必要があります

于 2013-02-01T01:58:48.573 に答える