2011-12-06 2 views
0

3 일 전에 Android 개발을 시작했으며 야후 메신저를 개발하려고합니다. 첫 번째 응용 프로그램의 지옥, 맞지?! : DTabActivity는 동일한 활동의 ​​여러 탭을 표시합니다 (하위 활동의 ​​속성 초기화)

현재 직면하고있는 문제는 내가 현재 채팅하고있는 사람들을 보여 주기로되어있는 탭이있는 IM 창을 구현하려고한다는 것입니다. 레이아웃 파일과 단일 채팅 창에 필요한 활동 클래스를 설계했으며 사용자 중 몇 명을 보여주기 위해 TabActivity을 사용하고 있습니다. 그러나 문제는 내가 활동 채팅 클래스 자체에 채팅 관련 정보 (예 : 현재 채팅하고있는 사용자의 ID)를 저장하고 새 탭을 만들 때 해당 값을 초기화하는 데 문제가 있다는 것입니다.

처음에 나는과 같이 초기화 할 BroadcastReceiver과 의도를 사용 :

protected class MyListener extends BroadcastReceiver 
    { 

     @Override 
     public void onReceive(Context context, Intent intent) 
     { 
      if (intent.getAction().equals(
        "com.sirm2x.messenger.CHAT_WINDOW_CREATED")) 
      { 
       ChatWindowActivity.this.friendId = intent.getExtras() 
       .getString("friendId"); 
      } 
     } 
    } 

문제는 모든 활동의 friendId가 마지막 탭 - 투 --생성을 위해 전달 된 값으로 설정되어 있다는 것입니다 !

이와 같은 상황에 대한 해결책/권장 사항은 무엇입니까? 나는 문제에 올바르게 접근하고 있는가?

도움을 주시면 대단히 감사하겠습니다!

답변

1

여기서 문제는 각 또는 탭에 브로드 캐스트 리시버를 등록하고 각 리시버가 브로드 캐스트를 수신하여 브로드 캐스트에 friendId 변수를 설정한다는 것입니다.

BroadcastReceiver가 올바른 접근 방법인지는 잘 모르겠습니다.

+0

어리석은 나를! 그래서 대체 무엇입니까? – M2X

+1

내가 맞다면이 브로드 캐스트는 채팅 창을 만들었을 때 전송됩니다. 이는 매개 변수가 활동을 시작하는 데 사용 된 의도에 넣을 수 있음을 의미합니다. – njzk2

+0

내 문제의 일부를 해결할 수는 있지만 어떻게해야합니까? 다른 속성을 초기화하고 데이터를 serialize하지 않고 의도를 통해 보내려는 경우를 대비하여? 어떤 제안? 더 좋게도, TabActivity를 통해 활동에 정의 된 필드에 액세스하는 방법이 있습니까? 내가 다음에하고 싶은 일에 매우 중요합니다! – M2X

관련 문제