2015-06-12 39 views
1

我在Android Studio中有一個設置活動,並且有一個密碼列表項,單擊時會提示EditTextPreferenceInputType密碼對話。我該如何做到這一點,以便當用戶輸入密碼時,會彈出另一個對話框,要求用戶確認密碼更改。如何在SettingsActivity for Android中更改密碼提示確認?

甚至更​​好,我怎樣才能使EditTextPreference多行提示輸入舊密碼,新密碼,在同一個對話框中確認新密碼?

我說在我的主要活動的onCreate

ListView lv; 
Context ctx=this; 

onCreate() { 



lv = getListView(); 

    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      if (position == 1) { 
       AlertDialog.Builder alertDialog = new AlertDialog.Builder(ctx); 
       alertDialog.setTitle("Values"); 
       final EditText oldPass = new EditText(ctx); 
       final EditText newPass = new EditText(ctx); 
       final EditText confirmPass = new EditText(ctx); 


       oldPass.setTransformationMethod(PasswordTransformationMethod.getInstance()); 
       newPass.setTransformationMethod(PasswordTransformationMethod.getInstance()); 
       confirmPass.setTransformationMethod(PasswordTransformationMethod.getInstance()); 


       LinearLayout ll = new LinearLayout(ctx); 
       ll.setOrientation(LinearLayout.VERTICAL); 

       ll.addView(oldPass); 

       ll.addView(newPass); 
       ll.addView(confirmPass); 
       alertDialog.setView(ll); 
       alertDialog.setPositiveButton("Yes", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 
           dialog.cancel(); 
          } 
         }); 
       alertDialog.setNegativeButton("No", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 
           dialog.cancel(); 
          } 
         }); 

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

以下但在應用程序的行爲沒有變化。我注重的listItem是第二次從頂部所以大概位置== 1

回答

2

我創建了一個LinearLayout並增加了兩個textBoxes到它,然後把它交給了alertBox

AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this); 
alertDialog.setTitle("Values"); 
final EditText oldPass = new EditText(MainActivity.this); 
final EditText newPass = new EditText(MainActivity.this); 
final EditText confirmPass = new EditText(MainActivity.this); 


oldPass.setTransformationMethod(PasswordTransformationMethod.getInstance()); 
newPass.setTransformationMethod(PasswordTransformationMethod.getInstance()); 
confirmPass.setTransformationMethod(PasswordTransformationMethod.getInstance()); 

oldPass.setHint("Old Password"); 
newPass.setHint("New Password"); 
confirmPass.setHint("Confirm Password"); 
LinearLayout ll=new LinearLayout(MainActivity.this); 
ll.setOrientation(LinearLayout.VERTICAL); 

ll.addView(oldPass); 

ll.addView(newPass); 
ll.addView(confirmPass);   
alertDialog.setView(ll); 
alertDialog.setPositiveButton("Yes", 
     new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
     dialog.cancel(); 
    } 
}); 
alertDialog.setNegativeButton("No", 
     new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
     dialog.cancel(); 
    } 
}); 

AlertDialog alert11 = alertDialog.create(); 
alert11.show(); 

檢查密碼與對象引用oldPassnewPass

如果你想添加對象到它,只需創建並添加到視圖。

要解決這個問題,當我在這個新對話框中取消或按下yes時,會出現舊對話框,我在我的pref_general.xml文件中將「EditTextPreference」更改爲「Preference」。現在,舊的對話根本沒有出現或顯示出來,問題已解決。

+0

因此,對於這種解決方案,我必須重寫設置列表視圖的onItemClickListener才能啓動此對話框而不是默認的對話框? – Alex

+0

是的,你可以使用任何你想要的。 'onItemClickListener'中的 –

+1

從'Listitem'獲取密碼,並將其設置爲oldPassword,如果需要,顯示對話框 –