how to set input type as password to edittext prog

2019-06-15 19:03发布

This question already has an answer here:

Hi all I am using alert dialog with edit text.So I want to set input type as password to that edit text programatically.I have searched a lot in google and find out these two methods:

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

input.setTransformationMethod(PasswordTransformationMethod.getInstance());

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

But it is not working for me,It showing the text.But i want dotted text.what is the problem I dont know.So please suggest me to do taht. Thanks to all in advance. this is the code of dialog with edit text:

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();


         }

So please help me what I did wrong.Thanks @All

4条回答
家丑人穷心不美
2楼-- · 2019-06-15 19:05

only try thisinput.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);

查看更多
Lonely孤独者°
3楼-- · 2019-06-15 19:11

Remove this and try

InputType.TYPE_CLASS_TEXT

查看更多
Explosion°爆炸
4楼-- · 2019-06-15 19:17

You need to call:

input.setTransformationMethod(PasswordTransformationMethod.getInstance());

As described here.

Also, as comments mentions in provided question:

you need to call setTransformationMethod instead of setInputType. Calling setInputType after setTransformationMethod causes the EditText to not be in password mode again.

So, it should look like the following per my understanding:

    input.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD );
    input.setTransformationMethod(PasswordTransformationMethod.getInstance());
查看更多
淡お忘
5楼-- · 2019-06-15 19:27

You are getting this problem because you are using alert.setCustomTitle(title);

after

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

Which making it again to normal type

either change : alert.setCustomTitle(title); to alert.setTitle("your title here");

or if you want to use customeTitle

Than use following code

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

after

alert.setCustomTitle(title);
查看更多
登录 后发表回答