2014-06-23 2 views
9

나는 몇 가지 활동에 A, B, C라고 말합니다. 활동 A는 B를 시작하고 B는 C를 시작합니다. 내 앱에서는 사용자가 액티비티 A로 돌아갈 수있는 탐색 서랍을 배치했습니다. 사용자가 액티비티 A로 돌아 가면 실제로 액티비티를 다시 시작하지 않고 그냥 다시 시작하는 플래그를 전달했습니다.번들로 새 데이터를 전달하여 이전 활동 재개

intent = new Intent(activity, A.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
     | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

이제 번들을 사용하여 일부 데이터를 전달하려고합니다.

bundle.putInt("selectedTab", FEATURED_COUPONS); 
    intent.putExtras(bundle); 

내 활동 A에서 번들은 항상 null입니다.

if(bundle != null) 
{ 
    if(bundle.containsKey("selectedTab")) 
    { 
     int tab = bundle.getInt("selectedTab"); 
    } 
} 
+0

번들을 받고 활동을 시작하는 코드를 게시하십시오. –

답변

16

당신은 잘못된 방법으로 일에 대한 것입니다. 당신이 원하는 모든 후이 작업을 수행하지 않는 Intent 여분 내로 Integer 추가를 넣어 경우

... putExtras(Bundle extras)에 대한 문서에서

bundle.putInt("selectedTab", FEATURED_COUPONS); 
intent.putExtras(bundle); 

...

추가 인 텐트에 확장 된 데이터 세트. 키에 패키지 접두어이 있어야합니다. 예를 들어 com.android.contacts 앱은 "com.android.contacts.ShowAll"과 같은 이름을 사용합니다.

대신 단지이 그러나 문제의 실제 원인이되지 않습니다

intent.putExtra("selectedTab", FEATURED_COUPONS); 

... 사용합니다. 수밋 Uppal 언급, 당신은 onResume()에서 사용할 수있는 ...

그런 ... 그런 다음 Intent 새로운 Intent 할 수있는 '현재'를 설정하는 것을 사용할 수 Activity A에

@Override 
protected void onNewIntent(Intent intent) { 
    if (intent != null) 
     setIntent(intent); 
} 

onNewIntent(Intent intent)를 구현해야합니다

Intent intent = getIntent(); 

... 에서 Bundle을 가져옵니다.

+0

약간 늦었지 만 지금이 솔루션을 발견해 마침내 3 시간의 검색 후 내 고뇌를 끝냈다 !!! – trueicecold

+1

감사합니다 !!!! onNewIntent을 완전히 잊었습니다 – reidisaki

+0

그게 내가 찾고있는 것입니다. 고마워요! – txedo

0

당신은 이미 당신이 다시 활동을 만들 경우 나는에 마무리()를 사용하는 것이 좋습니다,에 startActivityForResult를 사용하고 활동 A의 방법을 onActivityResult를 오버라이드 (override)

대신한다 생성 활동에 데이터를 전달하려면 activity, startActivity 메소드 후.

2

나는 당신이해야한다고 생각 "경우 (번들! = null이)"onNewIntent (의도)의 작업 방법

+0

은 수신 앱 또는 전송 앱에서 onNewIntent (인 텐트) 메소드입니까? – LizG

관련 문제