2013-05-06 96 views
0

我在为Android编程应用newbee。对于我的应用程序,我需要在应用程序启动后输入密码 .....迄今为止这么好。修改的EditText颜色AlertDialog将无法正常工作

但在喊我alertdialog输入的文本我txtPIN不能被看到的而言,它总会有颜色作为背景相同。我使用API​​ Lvl 17作为目标API。

如果任何人都可以给我一个提示,我会很高兴。

 if (dbManager.getToggle()==true){ 

     final EditText txtPIN = new EditText(this); 
     txtPIN.setTextColor(color.black); 
     txtPIN.setInputType(InputType.TYPE_CLASS_NUMBER); 

     AlertDialog.Builder alert = new AlertDialog.Builder(this,AlertDialog.THEME_HOLO_LIGHT); 
     alert.setTitle("PIN Security"); 
     alert.setMessage("Please enter PIN"); 
     alert.setView(txtPIN); 
     alert.setIcon(R.drawable.ic_launcher); 

     alert.setPositiveButton(getResources().getString(R.string.ok), new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       //comparison of PINs 
       if (txtPIN.getText().toString().equals(dbManager.getPIN()){ 
        Toast toast = Toast.makeText(getApplicationContext(), R.string.allowed, Toast.LENGTH_SHORT); 
        toast.setGravity(Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 150); 
        toast.show(); 

       } else { 
        Toast toast = Toast.makeText(getApplicationContext(), getResources().getString(R.string.denied) + "\n" + txtPIN.getText().toString() + "\n" + dbManager.getPIN(), Toast.LENGTH_SHORT); 
        toast.setGravity(Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 150); 
        toast.show(); 

        finish(); 
        System.exit(0); 
       } 

      } 
     }); 
+0

我觉得现在的问题是,'EditText'与创建应用程序'上下文'而不是'AlertDialog'。因此'EditText'不可能知道这个主题,因为它不能猜测它将被放置在哪里。尝试通过调用'AlertDialog对话框= alert.create(先创建一个'AlertDialog')',然后创建您的编辑文字'最后的EditText txtPIN =新的EditText(dialog.getContext());'。 – cgogolin 2015-11-27 14:19:41

回答

0

像这样创建EditText使用XML:

<EditText xmlns:andoird="http://schemas.android.com/apk/res/android" 
    android:id="@+id/edit_text" 
    android:inputType="number" 
    android:textColor="#000000" 
    android:OTHER_ATTRIBUTES_HERE/> 

,然后再制作AlertDialog像这样:

AlertDialog.Builder alert = new AlertDialog.Builder(this,AlertDialog.THEME_HOLO_LIGHT); 
LayoutInflater inflater = getActivity().getLayoutInflater(); 
View v = inflater.inflate(R.layout.edit_text_xml_file, null)); 
    alert.setTitle("PIN Security"); 
    alert.setMessage("Please enter PIN"); 
    alert.setView(v); 
    alert.setIcon(R.drawable.ic_launcher); 
    EditText txtPIN = (EditText) v.findViewById(R.id.edit_text); 

    alert.setPositiveButton(getResources().getString(R.string.ok), new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      //comparison of PINs 
      if (txtPIN.getText().toString().equals(dbManager.getPIN()){ 
       Toast toast = Toast.makeText(getApplicationContext(), R.string.allowed, Toast.LENGTH_SHORT); 
       toast.setGravity(Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 150); 
       toast.show(); 

      } else { 
       Toast toast = Toast.makeText(getApplicationContext(), getResources().getString(R.string.denied) + "\n" + txtPIN.getText().toString() + "\n" + dbManager.getPIN(), Toast.LENGTH_SHORT); 
       toast.setGravity(Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 150); 
       toast.show(); 

       finish(); 
       System.exit(0); 
      } 

     } 
相关问题