Начинающий Android Dev вопрос навигации по намерениям, получая ошибки, не уверен, как это исправить. Я пытался переставить и все, даже вкладки

1

Я создал эту страницу входа. Я начинаю с объявления переменных для имени пользователя/пароля и кнопок. Если пользователь вводит "тест" в качестве имени пользователя и "тестирует" в качестве пароля и нажимает кнопку входа в систему, он должен перейти к активности 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*/
    }
}
  • 0
    кодирование ... зе ужас
Теги:

3 ответа

1
Лучший ответ

Я только кратко просмотрел ваш код, но я не понимаю, что вы делаете (в этом порядке).

Вы проверяете пароль и имя пользователя в методе 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();
    }
}
0

Я почти уверен, что ваша проблема заключается в настройке вызова onClick() вместо того, чтобы просто начать работу. Кажется, это немного сложный вызов, и я думаю, что вы уже проверяете условия в соответствующем месте. Зачем вам нужен другой вызов onClick()?

  • 0
    Хорошо, я думаю, вы были правы насчет OnClick. Я изменил это и переставил несколько вещей. Затмение все еще вызывает у меня глупую ошибку насчет скобок? (Измененный код отражает отредактированный пост выше)
0

Вы должны правильно отложить свой код. Эта синтаксическая ошибка связана с тем, что у вас нет закрывающей скобки вокруг btnLogin.setOnClickListener. Затем вы пропустите хотя бы пару закрывающих скобок.

Также, как и другие опубликованные, вы проверяете значение edittext до того, как метод onCreate() даже откажется от контроля над пользовательским интерфейсом.

Вы устанавливаете прослушиватель кнопок только в том случае, если строки соответствуют.

Мне код и логин делают отлично смысл

Вы должны замедлиться и внимательно посмотреть. Это невозможно сделать совершенным, если есть синтаксические ошибки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню