2016-03-28 11 views
1

基本的には、すでにアクティブなアクティビティを新しいデータで開こうとしています。通知からPendingintentにバンドルを追加しました。しかし、私は活動の更新された値を得ることができません。 は、ここに私のコード次回に同じアクティビティを呼び出すときにPendingintentから更新されたエキストラを受け取ることができません

Intent in = new Intent(c, HomePageActivity.class); 
     Bundle bundle = new Bundle(); 
     bundle.putBoolean("id", "1234"); 
     in.putExtras(bundle); 

    in.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
      | Intent.FLAG_ACTIVITY_SINGLE_TOP 
      | Intent.FLAG_ACTIVITY_NEW_TASK); 

    in.setAction(Long.toString(System.currentTimeMillis())); 

    PendingIntent pi = PendingIntent.getActivity(c, 0, in, 
      PendingIntent.FLAG_UPDATE_CURRENT); 

と呼ばMyActivityでOnResume()である、しかし、id値は、古い '1111'

@Override 
protected void onResume() { 
    super.onResume(); 

    if (getIntent().hasExtra("id")) { 
     Log.e("id", getIntent().getStringExtra("id")); 
    } 
} 

ですが、それは私に与えてください

'1111' を返します解決策。

+0

なぜputboolean代わりputIntやputStringのを使用してみてください? –

答えて

0

新しい値を取得する前に、getIntent()。getExtras()を再度呼び出してみてください。それは追加の値を更新するはずです。

0

はonNewIntent

public void onNewIntent(Intent intent) 
    { 
     super.onNewIntent(intent); 
     setIntent(intent); 
     if(intent.getExtras()!=null) 
     { 
      String id = intent.getExtras().getStringExtra("id"); 
      updateValues(id); 
     } 
    } 
関連する問題