2011-12-20 38 views
1

我正在学习android,我正在做一个非常简单的任务。我使用切换按钮来显示/隐藏密码,当我启动应用程序并单击切换按钮时,它可以完美地工作......第一次。Android切换按钮只能工作一次。我怎样才能让它每次都有效?

但是,当我再次点击它(隐藏或再次显示密码)。没有发生任何事情。我希望有人能帮助我,我会非常感激。顺便说一下,如果你想查看它,这是我的代码。

package com.Amet.Android; 

import android.app.Activity; 
import android.os.Bundle; 
import android.text.InputType; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.ToggleButton; 

public class Texting extends Activity{ 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.text); 

    Button checked = (Button) findViewById(R.id.bChecked); 
    final ToggleButton tgShow = (ToggleButton) findViewById(R.id.tbType); 
    final EditText password = (EditText) findViewById(R.id.etPasswordField); 
    TextView invalid = (TextView) findViewById(R.id.tvInvalid); 

    tgShow.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      if(tgShow.isSelected()){ 

       password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD); 
      }else{ 

       password.setInputType(InputType.TYPE_CLASS_TEXT); 
      } 
     } 
    }); 
} 



} 

此外,我试图替换:这个 “如果” 语句中

password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD); 

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

但我有一样的。

回答

0

你试过tgShow.isChecked(),而不是tgShow.isSelected()

0

它看起来像EditTextsetInputType被称为复位TransformationMethodnull。此代码的工作对我来说:

mPasswordField = (EditText)customView.findViewById(R.id.password); 
... 
private void showPassword(boolean show) { 
    int selectionStart = mPasswordField.getSelectionStart(); 
    int selectionEnd = mPasswordField.getSelectionEnd(); 
    mPasswordField.setInputType(show ? 
     InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD : 
     InputType.TYPE_TEXT_VARIATION_PASSWORD); 
    mPasswordField.setTransformationMethod(show ? 
     null : 
     PasswordTransformationMethod.getInstance()); 
    mPasswordField.setSelection(selectionStart, selectionEnd); 
} 

根据this thread一个甚至都不需要调用setInputMethod

相关问题