Кнопка «Продолжить» не работает? Он должен начать новую активность, если у меня есть текст в EditText или сделать тост - PullRequest
0 голосов
/ 17 марта 2020

Я работаю с программой, которая должна задавать параметры для персонажа. Человек пишет имя, затем генерирует силу и здоровье, нажимая кнопку. В конце концов, он нажимает кнопку continueButton, которая должна запустить MainActivity, если имя существует, или сделать текст Toast. Но это не работает. Проблема должна быть в конце метода onClick.

Есть код

public class CreateActivity extends AppCompatActivity
    implements View.OnClickListener {
 final Random random = new Random();

String toastText;

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

@Override
public void onClick(View v) {
    Button continueButton = findViewById(R.id.continueButton);
    Button getData = findViewById(R.id.getData);

    final EditText newName = findViewById(R.id.newName);
    TextView newHealth = findViewById(R.id.newHealth);
    TextView newForce = findViewById(R.id.newForce);

    continueButton.setOnClickListener(this);
    getData.setOnClickListener(this);

    newName.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if(event.getAction()== KeyEvent.ACTION_DOWN &&
                    (keyCode == KeyEvent.KEYCODE_ENTER)){

                Character.name = newName.getText().toString();
                return true;
            }
            return false;
        }
    });

    switch (v.getId()){
        case R.id.getData: {
            Character.health = random.nextInt(100);
            newHealth.setText(String.valueOf(Character.health));
            Character.force = random.nextInt(100);
            newForce.setText(String.valueOf(Character.force));
        }

        // THERE IS A PROBLEM
        if (newName.getText().toString().equals("")) {
            switch (v.getId()) {
                case R.id.continueButton:
                    startActivity(new Intent(this, MainActivity.class));
                    finish();
                    return;
            }
        } else{
            switch (v.getId()) {
                case R.id.continueButton:
                    Toast toast = Toast.makeText(this, toastText, Toast.LENGTH_SHORT);
                    toast.show();
            }
        }
    }
}

}

1 Ответ

0 голосов
/ 17 марта 2020

Инициализируйте ваш Button внутри onCreate метод. Как это:

public class MainActivity extends AppCompatActivity 
    implements View.OnClickListener { 
    private Button yourButton; 

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

        yourButton= findViewById(R.id.your_button_id); 
        yourButton.setOnClickListener(this); 
    } 

    @Override
    public void onClick(View view) 
    { 
        switch (view.getId()) { 
        case R.id.your_button_id: 
            // Do something 
        } 
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...