2017-09-16 69 views
2

我試圖建立一個登錄頁面,但點擊一個按鈕時,顯示我的用戶名是「」獲得一個用戶名爲「」

public class MainActivity extends AppCompatActivity { 
public static final String userNameValue="abc"; 
public static final String passwordValue="abc"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    EditText editText1=(EditText)findViewById(R.id.userName); 
    final String valueUN= editText1.getText().toString(); 

    EditText editText2=(EditText)findViewById(R.id.password); 
    final String valuePW=editText2.getText().toString(); 

    Button loginButton=(Button)findViewById(R.id.button); 
    loginButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if(valueUN==userNameValue && valuePW==passwordValue) {     
       Toast.makeText(MainActivity.this, "Login was Successfully", Toast.LENGTH_SHORT).show(); 
      } else { 
       Toast.makeText(MainActivity.this, "Username or password is incorrect", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
} 
} 

,當我試圖調試使用代碼調試器則顯示valueUN和valuePW爲「」,爲什麼它顯示如此?它應該顯示我輸入的內容。

這不是重複問題獲取一個編輯文本字段事業這個問題的人想捕捉的的EditText和MMY問題輸入的數值的數值是編輯文本不顯示正確的價值

+3

'valueUN == userNameValue' - > [如何比較Java中的字符串?](https://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – Pshemo

+0

yes我應該使用,equals()而不是==它解決了我的問題 –

+0

另外我應該寫最後的String valueUN = editText1.getText()。toString();和最終的String valuePW = editText2.getText()。toString();在click()方法裏面 –

回答

2

的問題是在這裏

EditText editText1=(EditText)findViewById(R.id.userName); 
final String valueUN= editText1.getText().toString(); 

您在valueUN在創建它的同時,存儲的用戶名的值。您必須瞭解edittext創建時的時間,其初始值爲""。但是,當用戶在其上寫入內容,然後對其執行任何操作時點擊您的案例中的按鈕,那時您應該從edittext獲得當前值,而不是在創建時。

在您的代碼中,嘗試從onClickListener()方法中的edittext獲取值。

loginButton.setOnClickListener(new View.OnClickListener() { 
    @Override 

    public void onClick(View view) { 

     String valueUN = editText1.getText().toString(); 
     String valuePW = editText2.getText().toString(); 
     if(valueUN.equals(userNameValue) && valuePW.equals(passwordValue)) { 
      Toast.makeText(MainActivity.this, "Login was Successfully", Toast.LENGTH_SHORT).show(); 
     } 
     else { 
      Toast.makeText(MainActivity.this, "Username or password is incorrect", Toast.LENGTH_SHORT).show(); 
     } 
    } 
}); 

P.S .:不要使用==進行字符串比較。請使用equals()

+1

,謝謝關於Editext如何幫助我的解釋。 –