Включение и отключение системной клавиатуры для моего приложения - PullRequest
0 голосов
/ 30 ноября 2018

Это приложение с азбукой Морзе, которое преобразует азбуку Морзе в алфавиты, а в азбуку Морзе. Для этого я создал собственную клавиатуру.Чтобы отобразить и скрыть эту клавиатуру и системную клавиатуру, я использовал код, который у меня работает некорректно.

 package com.aswdc_morsecode.activity;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.InputType;
import android.text.TextWatcher;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.widget.EditText;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.aswdc_morsecode.R;

public class MainActivity extends AppCompatActivity {

    boolean isAlphaMorse = true;

    private TextView tvConvert;
    private TextView tvResult;
    private Button btnToMorse;
    private Button btnToAlpha;


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

// Здесь начинается метод для клавиатуры

        EditText editText = (EditText) findViewById(R.id.main_et_convert);
        MyKeyboard keyboard = (MyKeyboard) findViewById(R.id.keyboard1);

// строки ниже используются для включения и выключения системной клавиатуры

        editText.setRawInputType(InputType.TYPE_CLASS_TEXT);
        editText.setTextIsSelectable(true);

        InputConnection ic = editText.onCreateInputConnection(new EditorInfo());
        keyboard.setInputConnection(ic);
        keyboard.setVisibility(View.GONE);


        tvConvert = (TextView) findViewById(R.id.main_et_convert);
        tvResult = (TextView) findViewById(R.id.main_tv_result);
        btnToMorse = (Button) findViewById(R.id.main_btn_toMorse);

// Остальной код

        btnToMorse.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                isAlphaMorse = !isAlphaMorse;
                MyKeyboard keyboard = (MyKeyboard) findViewById(R.id.keyboard1);
                keyboard.setVisibility(isAlphaMorse?View.GONE:View.VISIBLE);
            }
        });
        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                if (isAlphaMorse) {
                    String txtToConvert = tvConvert.getText().toString();
                    String convertedTxt = MorseCode.alphaToMorse(txtToConvert);
                    tvResult.setText(convertedTxt);
                } else {
                    String txtToConvert = tvConvert.getText().toString();
                    String convertedTxt = MorseCode.morseToAlpha(txtToConvert);
                    tvResult.setText(convertedTxt);
                }
            }

            @Override
            public void afterTextChanged(Editable s) {
            }
        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...