调用getExtra时,Intent额外数据似乎消失了

时间:2011-07-24 20:48:52

标签: android

出于某种原因,当我收到意图时,我添加到我意图中的捆绑额外数据不会持续存在。我已经调试了很长一段时间了,但我发现我的代码没有任何问题。也许有人可以提供帮助。

意图创作:

// Intent created within an IntentService for an AppWidgetProvider
final Intent textViewIntent = new Intent(this, LocWidgetProvider.class);
textViewIntent.setAction(ACTION_CHANGE_LOCALE);
textViewIntent.putExtra("SomeExtra", "SomeValue");
Log.d("ExtraTest", String.format("Extra data: %s", 
       textViewIntent.getStringExtra("SomeExtra")));
final PendingIntent textViewPendingIntent = PendingIntent.getBroadcast(this, 0,
                            textViewIntent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.SomeButton, textViewPendingIntent);

按“SomeButton”后接收inent时:

protected void onHandleIntent(Intent intent) {   
if(intent.getAction().equals(ACTION_CHANGE_LOCALE))
{
    if(!intent.hasExtra("SomeExtra"))
    {
        Log.d("ExtraTest", "Extra data was null :(");
    }
    else {
        String newLocale = (String)intent.getExtras().get("SomeExtra");
        LocaleManager.ChangePhoneLocale(new Locale(newLocale));
    }
}

我一直在打:

“额外数据:SomeValue”(Intent似乎在创建时有数据)

“额外数据为空:(”。(收到时Intent不再具有ExtraData

创建意图时我做错了吗?

2 个答案:

答案 0 :(得分:2)

我也有这个问题并通过获得父意图来解决它 在我的情况下,我设置两个vales,一个转发到新的Activity,一个不是。

致电活动;

                                intent.putExtra(Constants.EXTRA_ID, note.getFormatedDate());
                            intent.putExtra(Constants.EXTRA_NAME, name);

接收活动

        String id = intent.getStringExtra(Constants.EXTRA_ID);


    if( id == null ) {
        Activity p = getParent();
        if( p != null ) {
            Intent i2 = p.getIntent();
            if( i2 != null ) {
                id = i2.getStringExtra(Constants.EXTRA_ID);
            }
        }
    } 

答案 1 :(得分:0)

尝试getParent().getIntent().getExtras().getWHATYOUWANT(key);,因为getParent()获取了调用意图的活动,所以附加内容也随之发送。

String newLocale = intent.getExtras().getString("SomeExtra");没有投出