2011-12-04 8 views
0

현재 탭이 5 개인 탭 호스트가 있습니다. 탭 중 하나를 통해 ImageView가 탭을 만들 때 POST를 통해 데이터를 가져 와서 숫자를 표시합니다. 하나의 탭 활동 중 하나 (예 : Rate.java)에서 해당 메서드를 호출하여 해당 탭 중 하나 인 ImageView를 업데이트하는 방법이 궁금합니다.tabhost 업데이트 다른 활동의 이미지보기

매우 구체적인 것은 아니라는 것을 알고 있습니다.하지만 내가 쓰는 것만으로도 내가 무슨 말을하고 있는지 알 수 있습니다.

정보가 더 필요하면 알려주세요. 주어진 정보를 바탕으로

talitore

답변

1

, 즉시 마음에 와서 두 가지 옵션은 다음과 같습니다

  • 가 탭 활동 (예 : Rate.java)에서 방송을 전송하고 이미지 뷰를 호스팅하는 활동을 그것을 들어라.
  • update 메소드로 사용자 정의 리스너 인터페이스를 사용하는 일종의 BaseActivity (확장 Activity)를 만듭니다. 탭 액티비티를 BaseActivity로 확장하고 ImageView에서의 액티비티로 BaseActivity를 구현하십시오. 그런 다음 탭 액티비티에서 리스너에 대한 update 메소드를 호출하고 (BaseActivity로 인스턴스화하고 리스너를 따라 전달) 이미지 뷰를 사용하여 액티비티를 적용 할 수 있습니다. 요청에 따라

// 편집 : 방송과 수신기에 대한 정보

좋은 출발점은 BroadcastReceiver에 대한 설명서입니다. 귀하의 경우에는 코드로 작성하는 것이 가장 쉽습니다.

BroadcastSendingActivity :

public class BroadcastSendingActivity extends Activity { 

    public static final String UPDATE_IMAGEVIEW = "UPDATE_IMAGEVIEW"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.sender); 

     Intent i = new Intent(); 
     i.setAction(UPDATE_IMAGEVIEW); 
     sendBroadcast(i); 
    } 

}

BroadcastReceivingActivity :

public class BroadcastReceivingActivity extends Activity { 

    private BroadcastReceiver mReceiver; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.receiver); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     unregisterReceiver(); 
    } 

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

    private void registerReceiver() { 
     if (mReceiver == null) { 
      mReceiver = new BroadcastReceiver() { 
       @Override 
       public void onReceive(Context context, Intent intent) { 
        if (intent.getAction().equals(BroadcastSendingActivity.UPDATE_IMAGEVIEW)) { 
         // code to update imageview... 
        } 
       } 
      }; 
     } 
     getApplicationContext().registerReceiver(mReceiver, new IntentFilter(BroadcastSendingActivity.UPDATE_IMAGEVIEW)); 
    } 

    private void unregisterReceiver() { 
     if (mReceiver != null) { 
      getApplicationContext().unregisterReceiver(mReceiver); 
     } 
    } 
,691

최소한의 예는 다음과 같은 것을 포함 할 것이다

}

코드를 테스트하지 않았지만 실수를 파악할 수있을 것입니다. :)

+0

나는 내 대답으로 첫 번째 옵션을 수락합니다. 조금 더 자세히 설명해 주시겠습니까? 아마 당신이 일하는 것을 구현하기 쉬운 뭔가에 대한 링크가 있을까요? 나는 내 부분에 대한 연구를 할 것이다. 시간 내 주셔서 감사합니다. –

+0

아이디어를 설명하기 위해 일부 코드 스 니펫을 추가했습니다. 'BroadcastSendingActivity'는 생성시 방송을 보내고, 이것은 BroadcastReceivingActivity에 의해 수신됩니다 (물론 방송이 보내지기 전에 수신기로 등록되어 있어야합니다). 귀하의 경우 탭 활동은 발신자가 될 것이며 이미지 활동을 호스팅하는 활동은 수신자를 볼 것입니다. –

+0

확인하려면, Rate.java에 BroadcastSendingActivity 서브 클래스를 추가하고 tabhost가있는 활동에 BroadcastReceivingActivity를 추가해야합니까? –