11

で警告ダイアログを使用していEditTextます。入力タイプをパスワードとしてその編集テキストにプログラムで設定したい。次の 2 つの方法を見つけました。

final EditText input = new EditText(getActivity()); 

input.setTransformationMethod(PasswordTransformationMethod.getInstance());

input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); 

しかし、これらは私にはうまくいきません。テキストが表示されますが、欲しいですEditText

これは、とのダイアログのコードですEditText:

public void showDialog(){
        
           /* Alert Dialog Code Start*/     
                AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
//              alert.setTitle("JPOP"); //Set Alert dialog title here
                alert.setMessage("              Please enter password"); //Message here
                
                Log.e("dialog in password ","passworddddddddddddddddd");

                // Set an EditText view to get user input 
                final EditText input = new EditText(getActivity());
//              input.setInputType(InputType.TYPE_CLASS_TEXT);
//              input.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
//              input.setTransformationMethod(PasswordTransformationMethod.getInstance());
                
//              final EditText input = new EditText(getActivity()); 
                input.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
                input.setTransformationMethod(new PasswordTransformationMethod());
                
                
                input.setHint("Password");
                input.setSingleLine();
                input.setTextSize(14);
                alert.setView(input);

                alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {

                    strPassword = input.getEditableText().toString().trim();    
                    
                    if(strPassword.length()!=0){
                 
                 String prestatus =DataUrls.preferences.getString("Password", "");
                 if(prestatus.equals(strPassword)){
                    
                     if(price_reports_check){
                         
                         price_reports_check=false;
                         
                            ReportsFragment reportfragment = new ReportsFragment();
                            FragmentManager fragmentManager = getFragmentManager();
                            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                            fragmentTransaction.replace(R.id.details, reportfragment);
                            fragmentTransaction.commit();   
                     }else{
                        PriceListFragment pricelistfragment = new PriceListFragment();
                        FragmentManager fragmentManager = getFragmentManager();
                        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                        fragmentTransaction.replace(R.id.details, pricelistfragment);
                        fragmentTransaction.commit();
                     }
                     
                 }else
                 {
                     showDialog();
                     Toast.makeText(getActivity(), "The password you entered is wrong", Toast.LENGTH_SHORT).show();
                 }
                 
                    }
                    else
                    {
                        showDialog();
                        Toast.makeText(getActivity(), "Please Enter Password", Toast.LENGTH_SHORT).show();
                        
                    }
                 
                } // End of onClick(DialogInterface dialog, int whichButton)
            }); //End of ok....
                
                alert.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int whichButton) {
                    // Canceled.
                      dialog.cancel();
                  }
            }); //End of alert.setNegativeButton
                
                
                AlertDialog alertDialog = alert.create();
                
                   TextView title = new TextView(getActivity());
                  // You Can Customise your Title here 
                    title.setText("JPOP");
//                  title.setBackgroundColor(Color.DKGRAY);
                    title.setPadding(10, 10, 10, 10);
                    title.setGravity(Gravity.CENTER);
//                  title.setTextColor(Color.WHITE);
                    title.setTextSize(20);
                    alert.setCustomTitle(title);
                    alert.setCancelable(false);

                    alert.show();
           
                
         }

私は何を間違えましたか?

4

4 に答える 4

12

使用しているため、この問題が発生しています alert.setCustomTitle(title);

input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
        input.setTransformationMethod(PasswordTransformationMethod.getInstance());

どちらがノーマルタイプに戻すか

どちらかへ変更alert.setCustomTitle(title); alert.setTitle("your title here");

または使用したい 場合 customeTitle

次のコードを使用するよりも

input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
input.setTransformationMethod(PasswordTransformationMethod.getInstance());
alert.setView(input);

alert.setCustomTitle(title);
于 2013-07-16T11:10:25.717 に答える
5

これだけ試してくださいinput.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);

于 2013-07-16T11:06:58.783 に答える
0

これを削除して試してください

InputType.TYPE_CLASS_TEXT

于 2013-07-16T11:02:47.360 に答える
-1

電話する必要があります:

input.setTransformationMethod(PasswordTransformationMethod.getInstance());

ここで説明したように。

また、提供された質問でコメントが言及しているように:

setInputType の代わりに setTransformationMethodを呼び出す必要があります。setTransformationMethod の後に setInputType を呼び出すと、EditText が再びパスワード モードにならなくなります。

したがって、私の理解では次のようになります。

    input.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD );
    input.setTransformationMethod(PasswordTransformationMethod.getInstance());
于 2013-07-16T11:07:56.143 に答える