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

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

Итак, что я пытаюсь сделать, это взять рассчитанную сумму денег из Основного занятия и отобразить сводку на второй странице.

int friendsInit = 1;
float collectAmount = splitCalc();

/* Friends increment/decrement functions */


public void friendIncrement(View view) {
    friendsInit = friendsInit + 1;
    friendsUpdate(friendsInit);
}

public void friendsDecrement(View view) {
    if (friendsInit > 1) {
        friendsInit = friendsInit - 1;
    }
    friendsUpdate(friendsInit);
}

/* Split calculations and update */

/*Rounding procedure*/

public static float round(float d, int decimalPlace) {
    BigDecimal bd = new BigDecimal(Float.toString(d));
    bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP);
    return bd.floatValue();
}

public float splitCalc() {
    EditText amountText = (EditText) findViewById(R.id.amount);
    float number = Float.valueOf(amountText.getText().toString());
    float collectAmount = round(number / (friendsInit + 1), 2);
    return collectAmount;

}

Итак, я хочу использовать переменную collectAmount во втором упражнении. Я немного искал вокруг и обнаружил, что вы используете.

float collectAmount = MainActivity.collectAmount;

Но это дает мне ошибку: «Нестатическое поле нельзя ссылаться из статического контекста» Я не уверен, что это значит или как это исправить.

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

1 Ответ

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

Вы можете передать переменную через Intent. Например, как это:

В вашей основной деятельности

public void startActivity() {
    Intent intent = new Intent(this, SecondActivity.class);
    intent.putExtra("example-extra", 5);
    startActivity(intent);
}

Во втором упражнении вы можете получить свою переменную следующим образом:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    int example_extra = getIntent().getIntExtra("example_extra", 0);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...