Android Java Передача значений между действиями - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть 2 мероприятия. У обоих реализован SurfaceView. В первом из них у меня есть переменная Score1, и я хочу передать значение из Score1 во второе действие.

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

Мое первое занятие имеет такую ​​цель:

Intent intent = new Intent (myContext, PunchItActivity.class);
intent.putExtra("score_var", score1);
myContext.startActivity(intent);
((Activity) myContext).finish();

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

Intent mIntent = ((Activity) myContext).getIntent();
int score1 = mIntent.getIntExtra("score_var", 0);
score1 *= molesWhacked + 10;
canvas.drawText("Score: " + Integer.toString(score1), 20, 160, blackPaint);

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

Ответы [ 2 ]

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

Проблема в том, что ваш mContext равен нулю, поэтому вам нужно его инициализировать.

Вам не нужно использовать mContext, если вы начинаете деятельность. Вы можете использовать this вашей активности, примерно так:

Intent intent = new Intent (this, PunchItActivity.class);
intent.putExtra("score_var", score1);
this.startActivity(intent);
this.finish();

или использовать что-то вроде этого, если ваш код внутри анонимного класса:

Intent intent = new Intent (YourActivity.this, PunchItActivity.class);
intent.putExtra("score_var", score1);
YourActivity.this.startActivity(intent);
YourActivity.this.finish();

Во втором упражнении вам не нужно использовать mContext, чтобы использовать метод getIntent(), потому что вам нужно только получить намерение, которое начнет второе упражнение. Намерение уже прикреплено ко второму виду деятельности. Итак, вам нужно изменить ваш код примерно так:

Intent mIntent = getIntent();
int score1 = mIntent.getIntExtra("score_var", 0);
score1 *= molesWhacked + 10;
canvas.drawText("Score: " + Integer.toString(score1), 20, 160, blackPaint);
0 голосов
/ 28 апреля 2018

попробуй так в своей первой деятельности:

Intent intent = new Intent (myContext, PunchItActivity.class);
        intent.putExtra("score_var", score1);
        myContext.startActivity(intent);
        //((Activity) myContext).finish();
...