2011-11-21 4 views
0

어제부터 한 가지 문제가있어 해결책을 찾을 수 없습니다. 내 탭 호스트의 하위 활동에서 variable0으로 설정하려고합니다. 기본적으로 나는이 상황이있다 :Android가 활동 시작시 값을 분명히합니다.

Activity A -- sends extra "something" to activity B (B is getting it) 
Activity B -- starts Activity C 
Activity C -- onButton click sends extra "something" to activity B and finish() 

이 모든 것은 첫 번째 탭에서 발생합니다. 문제는 내가 탭을 변경하고 B 액티비티 A로 되돌아 갈 때 액티비티 A에서 보내는 액티비티와 상관없이 추가 액티비티 C가 보내는 값을 여전히 저장하고있는 것입니다. 예제 코드는 다음과 같습니다.

,369 :

final int extra = getParent().getIntent().getIntExtra("SOMETHING", 0); 
Log.e("", "extra : " + extra); 

이 내가 활동 C에서 추가로 보내는 방법입니다

if (ownedCards != 0) { 
     ownedStampii.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
        Intent previewMessage = new Intent(getParent(), OwnedStampii.class); 
        TabGroupActivity parentActivity = (TabGroupActivity)getParent(); 
        previewMessage.putExtra("collection_id", collId); 
        previewMessage.putExtra("SOMETHING", 0); // this is what I'm trying to se to 0 
        parentActivity.startChildActivity("OwnedStampii", previewMessage); 

      } 
     }); 
} 

이 내가 활동 B에 추가 읽는 방법입니다 -

활동 A는 B가 시작

btn.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
    Intent intent = getParent().getIntent(); 
    intent.putExtra("SOMETHING", objectID); // objectId of category which will sort the data 
    getParent().setResult(RESULT_OK, intent); 
    finish(); 
} 
}); 

나는 int extra =0onResume(), onRestart(), onStop() .. 등으로 설정하려고 시도했지만 여전히 작동하지 않습니다.

제안 사항이 변수를 0으로 설정하려면 어떻게해야합니까? TabGroupActivity를 사용하는 동안

+0

에 C에서 새로운Intent을 보낼 수 있습니다. 특히 활동 B의 'onCreate()', 활동 C를 여는 함수,'onActivityResult()'. 그럼 ... onCreate() 또는 onActivityResult()에서 "extra"를 읽나요? 당신의 질문도 꽤 혼란 스럽습니다 ... 이것은 A -> B -> C -> B -> A -> B와 같은 활동을 할 때 문제를 재현하는 순서입니까? 버튼 클릭을 통해 항상 활동을 변경합니까, 아니면 어느 시점에서 다시 누르십니까? 어느 시점에서? –

답변

1

당신은이 까다로운 일이 될 수 IntentstartActivityResult()onActivityResult();

을 통해 활동 사이에 데이터를 전달해야합니다.

Here is a solution 어떻게 든 동일한 scanario를 가지고있는 다른 질문에 게시했습니다.

1

추가 변수를 최종 변수로 선언하면 이후에 변경할 수없는 것을 지정하고 할당하면 최종 변수로 선언됩니다.

그래서 재 할당하고 값을 변경하려고 할 때 기본적으로 변수가 최종 일 수는 없습니다.

+0

전역 변수로 선언하면 결과는 같습니다. –

2

활동 C에서 기존 의도를 다시 사용하고 다른 일을 동일한 의도로 처리한다고 생각합니다. 다시 넣기 전에 intent.removeExtra("SOMETHING");으로 전화 해보십시오. 또는 우리는 당신을 돕기 위해 더 많은 코드를 볼 필요 B.

Intent intent = getParent().getIntent(); 
intent.removeExtra("SOMETHING"); // Hox! Add this. 
intent.putExtra("SOMETHING", objectID); 
getParent().setResult(RESULT_OK, intent); 
finish(); 
+0

이것이 작동하지 않으면 C를 실행하기위한 B 행동 코드와 사용중인 B의'onActivityResult()'를 보여줍니다. –

관련 문제