从服务启动的 Activity 丢失了捆绑包中的 "extra"
Activity launched from a service loses the "extra" from the bundle
调用代码(运行 在服务中):
Intent textIntent = new Intent(this, TextActivity.class);
textIntent.putExtra("text_seq", message.xfer.seq);
textIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(textIntent);
调用代码(在TextActivity
):
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
Log.d(TAG, "" + bundle.getInt("text_seq"))
...
事实上,整个包都丢失了 - 上面的代码在调用 bundle.getInt()
.
时抛出 NPE
我确定我错过了一些明显的东西...
您尝试过使用 getIntent().getInt("text_seq")
吗?
您正在阅读的捆绑包不是为了这个目的。作为per docs
void onCreate (Bundle savedInstanceState)
Bundle: If the activity is being re-initialized after previously being
shut down then this Bundle contains the data it most recently supplied
in onSaveInstanceState(Bundle). Note: Otherwise it is null.
如果您需要额外的服务,您需要致电:
Bundle extras = getIntent().getExtra();
然后您可以尝试获取您的值:
int myVal = extras.getInt(key);
或者您可以尝试使用:
int myVal = getIntent().getIntExtra(key, defaultVal);
像这样获取您的礼包
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
Bundle intentBundle = getIntent().getExtra();
Log.d(TAG, "" + intentBundle.getExtra(“text_seq"))
}
您正在使用的捆绑包是 savedInstanceState
您可以阅读更多相关信息 here。
你需要用到的是这个:
Bundle intentBundle = getIntent().getExtra();
由于您将捆绑包添加到 Intent
extras,因此您需要从 getIntent().getExtra()
中获取它
您也可以获得这样的单品:
getIntent().getIntExtra("text_seq", defaultValToReturn);
调用代码(运行 在服务中):
Intent textIntent = new Intent(this, TextActivity.class);
textIntent.putExtra("text_seq", message.xfer.seq);
textIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(textIntent);
调用代码(在TextActivity
):
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
Log.d(TAG, "" + bundle.getInt("text_seq"))
...
事实上,整个包都丢失了 - 上面的代码在调用 bundle.getInt()
.
我确定我错过了一些明显的东西...
您尝试过使用 getIntent().getInt("text_seq")
吗?
您正在阅读的捆绑包不是为了这个目的。作为per docs
void onCreate (Bundle savedInstanceState)
Bundle: If the activity is being re-initialized after previously being shut down then this Bundle contains the data it most recently supplied in onSaveInstanceState(Bundle). Note: Otherwise it is null.
如果您需要额外的服务,您需要致电:
Bundle extras = getIntent().getExtra();
然后您可以尝试获取您的值:
int myVal = extras.getInt(key);
或者您可以尝试使用:
int myVal = getIntent().getIntExtra(key, defaultVal);
像这样获取您的礼包
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
Bundle intentBundle = getIntent().getExtra();
Log.d(TAG, "" + intentBundle.getExtra(“text_seq"))
}
您正在使用的捆绑包是 savedInstanceState
您可以阅读更多相关信息 here。
你需要用到的是这个:
Bundle intentBundle = getIntent().getExtra();
由于您将捆绑包添加到 Intent
extras,因此您需要从 getIntent().getExtra()
您也可以获得这样的单品:
getIntent().getIntExtra("text_seq", defaultValToReturn);