Я создал эту страницу входа. Я начинаю с объявления переменных для имени пользователя/пароля и кнопок. Если пользователь вводит "тест" в качестве имени пользователя и "тестирует" в качестве пароля и нажимает кнопку входа в систему, он должен перейти к активности DrinksTwitter.class, иначе создайте сообщение об ошибке, которое я создал. Для меня код и логин имеют прекрасный смысл. Я не уверен, почему он не перейдет к следующему действию, я хочу, чтобы он пошел на
package com.android.drinksonme;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Screen2 extends Activity {
// Declare our Views, so we can access them later
private EditText etUsername;
private EditText etPassword;
private Button btnLogin;
private Button btnSignUp;
private TextView lblResult;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Get the EditText and Button References
etUsername = (EditText)findViewById(R.id.username);
etPassword = (EditText)findViewById(R.id.password);
btnLogin = (Button)findViewById(R.id.login_button);
btnSignUp = (Button)findViewById(R.id.signup_button);
lblResult = (TextView)findViewById(R.id.result);
// Check Login
String username = etUsername.getText().toString();
String password = etPassword.getText().toString();
if(username.equals("test") && password.equals("test")){
final Intent i = new Intent(Screen2.this, DrinksTwitter.class);
btnLogin.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
startActivity(i);
}
// lblResult.setText("Login successful.");
else { /* ERROR- Syntax error on token "else", { expected */
lblResult.setText("Invalid username or password.");
}
}
});
final Intent k = new Intent(Screen2.this, SignUp.class);
btnSignUp.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
startActivity(k);
}
}); /* ERROR- Syntax error, insert "}" to complete Statement*/
}
}
Я только кратко просмотрел ваш код, но я не понимаю, что вы делаете (в этом порядке).
Вы проверяете пароль и имя пользователя в методе OnCreate, который, запрещая любое автозаполнение, текстовые поля будут пустыми.
Затем вы объявляете своих onClickListeners.
Попробуйте перестроить его как нечто подобное (псевдокод):
OnCreate
user = usertextbox
pass = passtextbox
login.setOnClick
if user == validUsername && pass == validPass
Intent i = new Intent(blah.this, blah.class)
startActivity(i)
else
Intent i = new Intent(blah.this, login.class)
startActivity(i)
Вот как у меня есть экран входа в приложение.
Короче говоря, вы должны сделать проверку в OnClickListener кнопки действия, а не в методе OnCreate для этой операции. Как сейчас, форма создана, а текстовые поля пусты. Затем сразу же они сравниваются с некоторыми значениями. Этот вызов всегда будет не выполнен, поэтому весь код в вашей области приложения If будет игнорироваться неограниченно.
Кроме того, причина, по которой Eclipse дает вам эту ошибку, заключается в том, что вы пытаетесь поместить инструкцию else в определение класса.
Когда вы объявляете новый OnClickListener() {}, вы по существу объявляете класс. Таким образом, вы находитесь в области класса, а не в области if.
Это будет похоже на попытку:
class test {
else {
doStuff();
}
}
Я почти уверен, что ваша проблема заключается в настройке вызова onClick() вместо того, чтобы просто начать работу. Кажется, это немного сложный вызов, и я думаю, что вы уже проверяете условия в соответствующем месте. Зачем вам нужен другой вызов onClick()?
Вы должны правильно отложить свой код. Эта синтаксическая ошибка связана с тем, что у вас нет закрывающей скобки вокруг btnLogin.setOnClickListener
. Затем вы пропустите хотя бы пару закрывающих скобок.
Также, как и другие опубликованные, вы проверяете значение edittext до того, как метод onCreate() даже откажется от контроля над пользовательским интерфейсом.
Вы устанавливаете прослушиватель кнопок только в том случае, если строки соответствуют.
Мне код и логин делают отлично смысл
Вы должны замедлиться и внимательно посмотреть. Это невозможно сделать совершенным, если есть синтаксические ошибки.