Мой TextView.OnEditorActionListener () не работает - PullRequest
0 голосов
/ 10 июня 2019

Я создаю приложение для проводника игры. В этой игре проводник должен вводить имена каждого игрока в поле EditText, имена будут сохранены в массиве строк для будущих назначений ролей.

Мой идентификатор EditText - это addplayer, и я назначил ему метод setOnEditorActionListener ().

Я добавил это условие if (actionId == EditorInfo.IME_ACTION_NEXT) в его тело.

Хотя ни одна из моих команд не работает.

public class FirstActivity extends AppCompatActivity implements View.OnClickListener {

    static List<String> names = new ArrayList<>();
    static int playerSum = 0;

    RelativeLayout firstActLayout;
    TextView numberOfPlayers;
    EditText addPlayer;
    TextView doneButton;
    TextView settingsButton;
    InputMethodManager imm;

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

        firstActLayout = findViewById(R.id.first_act_layout);
        numberOfPlayers = findViewById(R.id.number_of_players);
        addPlayer = findViewById(R.id.add_player);
        doneButton = findViewById(R.id.done_button);
        settingsButton = findViewById(R.id.settings_button);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.add_player:
                addPlayers();
                break;
            case R.id.done_button:
                openSecondActivity();
                break;
            case R.id.settings_button:

                break;
        }
    }

    public void addPlayers (){
        addPlayer.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {

                if (actionId == EditorInfo.IME_ACTION_NEXT) {
                    // add player's name to the name array.
                    names.add(addPlayer.getText().toString());
                    // increment the total number of players.
                    playerSum++;
                    // display the total number of players next the hash tag.
                    numberOfPlayers.append(Integer.toString(playerSum), 8, 12);
                    // keep the soft keyboard available for the next entry.
                    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
                }
                return false;
            }
        });
    }
}

XML:

    <EditText
        android:id="@+id/add_player"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="3dp"
        android:layout_marginTop="3dp"
        android:layout_marginRight="3dp"
        android:layout_marginBottom="3dp"
        android:autofillHints="@string/enter_name"
        android:background="#fff"
        android:layout_centerHorizontal="true"
        android:hint="@string/enter_name"
        android:inputType="text"
        android:clickable="true"
        android:focusable="true"
        android:imeOptions="actionNext"
        android:singleLine="true"
        android:textColor="#FF030303"
        tools:targetApi="o"
        />

Я хочу, чтобы проводник мог: 1. введите имя в EditText 2. и нажмите следующий значок на программной клавиатуре.

Публичный void addPlayers () должен: 1. возьмите добавленное имя и присвойте его массиву names [], 2. удалите поле EditText для следующей записи, 3. увеличить количество игроков с помощью playerSum ++, 4. отобразить общее количество игроков (playerSum ++) в поле TextView (numberOfPlayers). 5. держите экранную клавиатуру на дисплее для следующего имени.

но ничего не происходит. Имя игрока находится в поле EditText.

1 Ответ

0 голосов
/ 12 июня 2019

Хорошо, я только что понял, где я ошибся. Я забыл добавить эти 3 строки:

    addPlayer.setOnClickListener(this);
    doneButton.setOnClickListener(this);
    settingsButton.setOnClickListener(this);

Когда я думаю об этом, этот вопрос был довольно глупым, смеется. Как бы кнопки работали без метода установки? duhhh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...