Я пытаюсь передать int через намерение другому классу, и мне удалось успешно пройти через целое число, однако я не уверен, как преобразовать Bundle в Integer.

Код из намерения:

private void nextPage()
{
    Intent intent = new Intent(this, Timer.class).putExtra("totalTime", totalTime);
    startActivity(intent);
}

Код в классе таймера:

    Bundle time = getIntent().getExtras();

    if(time == null)
    {
        timeDisp.setText("Failed.");
    }
    else
    {
        totalTimeMs = Integer.parseInt(String.valueOf(time));
        timeDisp.setText(totalTimeMs);
    }

Заранее спасибо :)

0
Caoimhe 14 Апр 2016 в 17:40

3 ответа

Лучший ответ

Intent может содержать напрямую все типы примитивов Java и объекты, которые можно разделить / сериализовать.

Вы можете запутаться, потому что он также может содержать пакеты.

Вам действительно нужно поместить целое число в Bundle? Это может быть верно для нескольких логически связанных значений.

Проверьте Intent API.

0
Maxim G 14 Апр 2016 в 16:10

Если ваш totalTime относится к типу int, который вы проходите через putExtra(), вы можете использовать:

int time = getIntent().getExtras().getInt("totalTime");
0
Pooya 14 Апр 2016 в 15:24

Вы не добавляете свое намерение в Bundle, поэтому в процессе получения вы пытаетесь получить данные из пустого Bundle.

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

private void nextPage()
{
    Intent intent = new Intent(this, Timer.class);
    Bundle b = new Bundle():
    b.putString("totalTime", totaltime);

    intent.putExtras(b);
    startActivity(intent);
}

Затем вы получите String из пакета:

Intent intent = getIntent();
Bundle extras = intent.getExtras();

String time = extras.getString("totalTime");
0
Will Evers 14 Апр 2016 в 15:37