Открытие другого действия на основе количества заполненных правок редактирования. - PullRequest
0 голосов
/ 03 октября 2018

app имеет MainActivity с полями 6 editText и button.Есть еще 5 действий с именами Activity2, Activity3 и т. Д. Теперь, когда пользователь вводит имена в поля editText и нажимает button, app должно узнать, сколько полей editTextзаполняются и открывают деятельность с соответствующим номером в названии.

Пример:

  • Если заполнено только одно поле, должно появиться toast со словами Больше игроков .
  • Если два поля заполнены, app открывается Activity2.
  • Если три поля заполнены, app открывается Activity3 и т. Д.

Теперь к проблеме.Я что-то упустил, и не могу узнать, что.Вот MainActivity.java

public class MainActivity extends AppCompatActivity {

private EditText editText1,editText2,editText3,editText4,editText5,editText6;

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

    Button btn = findViewById(R.id.btn);
    editText1 = findViewById(R.id.editText1);
    editText2 = findViewById(R.id.editText2);
    editText3 = findViewById(R.id.editText3);
    editText4 = findViewById(R.id.editText4);
    editText5 = findViewById(R.id.editText5);
    editText6 = findViewById(R.id.editText6);


    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            int filledFileds = countFilledFields();
            Log.d("filled", String.valueOf(filledFileds));
            Class newClass = MainActivity.class;

            switch (filledFileds){

                case 1:

                    Context context = getApplicationContext();
                    CharSequence text = "You need more players!";
                    int duration = Toast.LENGTH_SHORT;

                    Toast toast = Toast.makeText(context, text, duration);
                    toast.show();

                    break;

                case 2:

                    newClass = Activity2.class;
                    System.out.println("Activity2");

                    break;

                case 3:

                    newClass = Activity3.class;
                    System.out.println("Activity3");

                    break;

                case 4:

                    newClass = Activity4.class;
                    System.out.println("Activity4");

                    break;

                case 5:

                    newClass = Activity5.class;
                    System.out.println("Activity5");

                    break;

                case 6:

                    newClass = Activity6.class;
                    System.out.println("Activity6");

                    break;

                default:


            }

            Intent intent = new Intent(MainActivity.this, newClass);
        }
    });
}

private int countFilledFields() {

    ArrayList<EditText> editTexts = new ArrayList<>();
    editTexts.add(editText1);
    editTexts.add(editText2);
    editTexts.add(editText3);
    editTexts.add(editText4);
    editTexts.add(editText5);
    editTexts.add(editText6);

    int filledNumber = 0;

    for(int i = 0;i < editTexts.size() ;i++){

        if(editTexts.get(i).getText()!=null && !editTexts.get(i).getText().toString().matches("")){
            filledNumber += 1;
        }

    }
    return filledNumber;
}

}

В журнале указано точное число, что-то не работает ...

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Вам не хватает одной вещи:

 startActivity(intent);
0 голосов
/ 03 октября 2018

Вот ваш прослушиватель щелчков, для краткости опущен switch:

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        int filledFileds = countFilledFields();
        Log.d("filled", String.valueOf(filledFileds));
        Class newClass = MainActivity.class;

        switch (filledFileds){
            ...
        }

        Intent intent = new Intent(MainActivity.this, newClass);
    }

Проблема в самом конце: вы создали объект Intent... но ты ничего с этим не делаешь.Возможно, вы только что забыли вызов startActivity():

Intent intent = new Intent(MainActivity.this, newClass);
startActivity(intent);

Кроме того, при просмотре у вас возникает проблема со случаем, когда пользователь вводит только один EditText.Как написано, вы все равно будете пытаться начать новое действие (вы просто начнете новую копию той же MainActivity, что, вероятно, является плохой идеей).Лучше было бы начинать новое действие только в том случае, если пользователь заполняет достаточно EditTexts:

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        int filledFileds = countFilledFields();
        Log.d("filled", String.valueOf(filledFileds));
        Class newClass = null;

        switch (filledFileds){
            ...
        }

        if (newClass != null) {
            Intent intent = new Intent(MainActivity.this, newClass);
            startActivity(intent);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...