2013-07-16 11 views
10

Xin chào tất cả Tôi đang sử dụng hộp thoại cảnh báo với văn bản chỉnh sửa. Tôi muốn đặt loại đầu vào làm mật khẩu cho văn bản chỉnh sửa đó. Tôi đã tìm kiếm rất nhiều trong google và tìm ra hai phương pháp:cách đặt loại đầu vào là mật khẩu thành edittext theo chương trình

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

input.setTransformationMethod(PasswordTransformationMethod.getInstance()); 

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

Nhưng nó không phải đang làm việc cho tôi, nó cho thấy text.But tôi muốn text.what rải rác là vấn đề tôi không know.So xin đề nghị tôi làm taht. Xin cảm ơn tất cả trước. đây là mã của hộp thoại với chỉnh sửa văn bản:

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


     } 

Vì vậy, hãy giúp tôi những gì tôi đã làm wrong.Thanks @All

+2

Have You thử http://stackoverflow.com/questions/2586301/set-inputtype-for-an-edittext? – sandrstar

+0

vâng, tôi đã thử nhưng nó không hoạt động đối với tôi – rams

+1

Có chú thích đặc biệt cho Bạn trong liên kết được cung cấp: Chỉ cần thêm vào điều này, bạn cần gọi setTransformationMethod thay vì setInputType. Gọi setInputType sau khi setTransformationMethod làm cho EditText không ở chế độ mật khẩu một lần nữa. – sandrstar

Trả lời

0

Di chuyển này và cố gắng

InputType.TYPE_CLASS_TEXT

+0

cảm ơn bạn đã phản hồi của bạn, điều này cũng không làm việc – rams

3

chỉ cố gắng này input.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);

-1

Bạn cần gọi:

input.setTransformationMethod(PasswordTransformationMethod.getInstance()); 

Như được mô tả here.

Ngoài ra, như bình luận đề cập trong câu hỏi cung cấp:

bạn cần phải gọi setTransformationMethod thay vì setInputType. Gọi setInputType sau khi setTransformationMethod làm cho EditText không ở chế độ mật khẩu một lần nữa.

Vì vậy, nó sẽ giống như sau mỗi sự hiểu biết của tôi:

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

tôi đã thử, nó không hoạt động – rams

+0

Tôi cũng đã thử nó - và nó hoạt động tốt (ví dụ như trên 4.2 thiết bị). – sandrstar

+0

có, tôi cũng đã thử trong 4.2 (máy tính bảng) .Và tôi đang sử dụng các mảnh vỡ, là có bất kỳ vấn đề cho các mảnh vỡ – rams

11

Bạn đang nhận được vấn đề này vì bạn đang sử dụngalert.setCustomTitle(title);

sau

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

nào làm cho nó lại thành loại bình thường

thể thay đổi: alert.setCustomTitle(title);đểalert.setTitle("your title here");

hay nếu bạn muốn sử dụngcustomeTitle

Thần sử dụng đoạn mã sau

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

sau

alert.setCustomTitle(title); 
+0

nó không hoạt động – rams

+0

có, tôi có thể nhập và hiển thị văn bản cũng – rams

+0

@venkataramana xem câu trả lời cập nhật của tôi! –