Из моего класса StartActivity, который является Actvity, я вызываю другое действие, используя намерение.
Intent intent = new Intent(getApplicationContext(), TabsActivity.class);
intent.putExtra(CHANGE_PACK, changePack);
startActivity(intent);
CHANGE_PACK является статическим окончательным значением String и changePack является true. (Я проверил его путем отладки)
Но когда я получаю это значение в TabsActivity,
boolean packChanged = getIntent().getBooleanExtra(StartActivity.CHANGE_PACK, false);
Значение packChanged равно false. Я проверил в Интернете, но помощь не найдена. В основном я использую то же самое, что и в моем приложении, и он работает нормально.
Любой может сказать, почему он не работает.
Дополнительно: обе действия зарегистрированы в манифесте, и я делаю это в методе onResume() обеих видов деятельности.
Попробуйте запустить getIntent().getBooleanExtra(...)
в onCreate вместо этого. Или Переопределите protected void onNewIntent(Intent intent)
и protected void onNewIntent(Intent intent)
ваше логическое значение из этого объекта-объекта.
Проверьте, как TabsActivity android:launchMode
объявлен в манифесте. Если это singleTop
или singleTask
вы должны использовать onNewIntent()
в своей TabsActivity (вместо onResume), чтобы получать свежие дополнения от нового намерения. getIntent в этой ситуации вернет первое, оригинальное намерение, используемое для создания экземпляра этого действия
http://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent)
PS Пример:
public class MyActivity extends Activity {
...
@Override
protected void onNewIntent(final Intent intent) {
super.onNewIntent(intent);
boolean packChanged = intent.getBooleanExtra(StartActivity.CHANGE_PACK, false);
}
}
У меня также была эта проблема, и я не смог ее решить. Я закончил тем, что использовал следующий хак:
Intent intent = new Intent(getApplicationContext(), TabsActivity.class);
intent.putExtra(CHANGE_PACK, Boolean.toString(changePack));
startActivity(intent);
а потом
boolean packChanged = Boolean.parseBoolean(getIntent().getStringExtra(StartActivity.CHANGE_PACK));
Хакки, но это работает.
Ваш код кажется прекрасным. Единственное место, где вы управляете переменной CHANGE_PACK
. Попытайтесь использовать его вместе с именем класса (с момента его объявления Static). Используйте intent.putExtra(StartActivity.CHANGE_PACK, changePack);
,
попробуйте использовать это
boolean packChanged;
Bundle extra=getIntent().getExtras();
if(extra!=null){
packChanged=extra.getBoolean("enter your key which u have used in StartActivity");
}