2016-03-07 110 views
2

我想進行一次小型登錄,如果密碼正確,它應該顯示一個彈出窗口(Toast)。登錄設計和activity_main.xml都可以,但是我的MainActivity.java出了問題。它沒有顯示任何錯誤,應用程序沒有崩潰,但它不會給我Toast操作。Toast未顯示

我下面這個教程:https://examples.javacodegeeks.com/android/android-login-example/

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.localhost.login.MainActivity"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceSmall" 
    android:text="Please fill in your password." 
    android:id="@+id/textView" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentStart="true" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="textPassword" 
    android:ems="10" 
    android:gravity="center" 
    android:id="@+id/digitcode" 
    android:layout_marginTop="47dp" 
    android:textSize="15dp" 
    android:layout_below="@+id/textView" 
    android:layout_centerHorizontal="true" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/btn_login_submit" 
    android:id="@+id/loginButton" 
    android:layout_below="@+id/digitcode" 
    android:layout_marginTop="47dp" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentEnd="true" /> 
</RelativeLayout> 

MainActivity.java

package com.localhost.login; 

import android.support.v7.app.AppCompatActivity; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 

private EditText passcode; 
private Button login; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    setupVariables(); 
} 

// Check login 
public void checkLogin(View view) { 
    if (passcode.getText().toString().equals("aa")) { 
     Toast.makeText(getApplicationContext(), "Hi Man!!", Toast.LENGTH_SHORT).show(); 
    } 
} 

// Declare variables 
private void setupVariables() { 
    passcode = (EditText) findViewById(R.id.digitcode); 
    login = (Button) findViewById(R.id.loginButton); 
} 


} 

有人可以給我在正確的方向推?

+2

它看起來不像你在調用checkLogin方法。那麼如何達到這個條件呢? – chRyNaN

+3

在按鈕的XML文件中添加'android:onClick =「checkLogin」',或者在Java端爲此按鈕調用此函數註冊偵聽器。 –

+0

@AlexisC。這看起來像是答案,而不是評論 –

回答

2

嘗試加入這一行你<Button>在XML文件:

<android:onClick="checkLogin" 
1

我看着你的代碼,一切都是完美的,有一件事我觀察是, checkLogin方法沒有任何地方調用,所以你需要在setupVariables方法內調用checkLogin方法。

+1

一切都不完美。該方法不需要調用;按鈕監聽器需要設置 –

+0

是的,這是正確的。感謝您的糾正。 – Archana

1

我傾向於發現隱藏的XML onClick設置,當您開始製作大量的onClick設置時很難追蹤。

或者,您可以在Java代碼中設置按鈕單擊。

private void setupVariables() { 
    passcode = (EditText) findViewById(R.id.digitcode); 
    login = (Button) findViewById(R.id.loginButton); 
    login.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (TextUtils.equals(passcode.getText(), "aa")) { 
       Toast.makeText(getApplicationContext(), "Hi Man!!", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
}