Передача переменной между действиями с использованием «.» - PullRequest
0 голосов
/ 05 июля 2018

Предположим, я объявил и инициализировал следующие переменные в основной активности моего приложения:

public class MainActivity {
    int numberOfBricks = 23;
    int weightOfBrick = 13;
}

Предположим, я перехожу ко второму действию приложения, которое называется SecondActivity, и я хочу вычислить общий вес блоков. Я ожидаю, что процедура будет просто:

public class SecondActivity {
      int totalWeight = MainActivity.numberOfBricks * MainActivity.weightOfBrick;
}

Это правильно?

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Нет. С жизненным циклом приложения для Android вы начинаете второе действие через объект намерения.

С этим объектом намерения вы бы сделали

Intent intent = new Intent(ThisActivity.this, NextActivity.class);
startActivity(intent);

Однако вы можете передать информацию этому намерению, вызвав putExtra для объекта намерения, например:

intent.putExtra("NameForInformation", actualInformation)

, например

Intent intent = new Intent(ThisActivity.this, NextActivity.class);
intent.putExtra("totalWeight", (numberOfBricks*weightOfBrick);
startActivity(intent);

В onCreate вашего второго действия вы можете выполнить getIntent.getExtra ("NameOfInformation"), чтобы получить информацию

, например

int totalWeight = (int) getIntent.getExtra("totalWeight");
0 голосов
/ 05 июля 2018

Это не правильно. MainActivity.numberOfBricks означает, что переменная является статическим int, который является общим для всех экземпляров класса MainActivity, когда нужный вам фактически для одного экземпляра. Вам нужно использовать Намерение, чтобы добраться до SecondActivity и вместе с ним отправлять дополнения.

В MainActivity:

Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("numBricks", numberOfBricks);
intent.putExtra("weight", weightOfBrick);
startActivity(intent);

В SecondActivity OnCreate():

Intent intent = getIntent();
int numBricks = intent.getIntExtra("numBricks");
int weight = intent.getIntExtra("weight");
int totalWeight = numBricks * weight;

Использование дополнительного помещает данные переменной в намерение с ключом, который может быть собран SecondActivity, пока он знает ключ.

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