Как передать переменную из одного класса в другой в Android - PullRequest
0 голосов
/ 26 апреля 2018

Как назначить пользовательский ввод (из TextView) в переменную, а затем вызвать эту переменную в другом классе?

Из моей MainActivity у меня есть следующее, куда вводится пользовательский ввод:

Button confirm;
EditText inputField;
String typedChar;
char[] cars = typedChar.toCharArray();

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

    confirm = (Button)findViewById(R.id.btConfirmInput);

    inputField = (EditText) findViewById(R.id.etInputChars);

    confirm.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                  typedChar = inputField.getText().toString();

                }
            }
    );

Я пытаюсь сохранить ввод и преобразовать его в символ

String typedChar;
    char[] cars = typedChar.toCharArray();

Теперь я хочу использовать cars в другом классе в следующем методе, который печатает в пользовательское представление:

 private void drawText() {
        for (int i = 0; i < txtPosByColumn.length; i++) {
            canvas.drawText("" + cars[RANDOM.nextInt(cars.length)], i * fontSize, txtPosByColumn[i] * fontSize, paintTxt);

            if (txtPosByColumn[i] * fontSize > height && Math.random() > 0.975) {
                txtPosByColumn[i] = 0;
            }

            txtPosByColumn[i]++;
        }

Однако я могу назначить жестко закодированное значение для cars, как показано ниже:

private char[] chars = "010101".toCharArray();

но я хочу, чтобы он исходил из пользовательского ввода

Любой, пожалуйста, совет, руководство. Я знаю, что делаю что-то неправильно, но не могу понять ...

PS: Нуб здесь

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Вы должны указать тип этого другого класса. Если это простой Java-класс, вы можете передать его в виде поля в свой drawText (массив []); Однако, если вы имеете дело с деятельностью: В первом упражнении перед запуском другого действия используйте Дополнительное намерение для передачи данных между действиями, как показано в ответе ранее.

0 голосов
/ 26 апреля 2018

Вы помещаете свою переменную в Intent, как это:

confirm.setOnClickListener(
     new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            typedChar = inputField.getText().toString();
            char[] chars = typedChar.toCharArray();
            Intent intent = new Intent(MyCurrentActivity.this, MySecondActivity.class);
            intent.putExtra("somethingWithARelevantName", chars);
            startActivity(intent);
            }
       }
    );

И вы получаете это во втором занятии, как это:

Intent intent = getIntent();
char[] chars = intent.getExtras().getCharArray("somethingWithARelevantName");

edit: если вы хотите, чтобы ваша переменная была в классе, не являющемся действием, вы можете передать ее в конструктор:

class MyClass{

    char[] chars;

    MyClass(char[] chars){

        this.chars = chars;

    }

}

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