2011-12-04 110 views
0

我目前有一個帶有5個選項卡的tabhost。在其中一個選項卡中,我有一個ImageView,當創建選項卡時,它通過POST提取數據以顯示數字。我想知道如何從一個選項卡活動(比如說Rate.java)我可以調用該方法來更新該標籤上的ImageView。更新從另一個活動tabhost imageView

我知道這不是很具體,但我認爲我寫了它,所以你知道我在說什麼。

讓我知道你是否需要任何信息。

talitore

回答

1

根據所給出的信息,即馬上想到的兩個選項是:

  • 發送從標籤活動(例如Rate.java)廣播,並有主持的ImageView活動聽着。
  • 創建某種類型的BaseActivity(擴展爲Activity),它將自定義偵聽器接口與更新方法結合使用。讓您的選項卡活動擴展該BaseActivity,並使用您的ImageView執行活動。然後,您可以從您的選項卡活動中調用偵聽器的更新方法(將它們實例化爲BaseActivity並傳​​遞偵聽器),並使用ImageView對該活動進行操作。每個請求

//編輯:

一個很好的起點有關的廣播和接收器信息是爲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); 
     } 
    } 

}

請注意,我沒有測試代碼,但我相信您能夠找出我可能犯的任何錯誤。 :)

+0

我會接受你的第一個選項作爲我的答案。請您詳細說明一下嗎?也許有一個易於實現的東西的鏈接,你知道的作品?我會做我的研究。感謝您的時間。 –

+0

我已經添加了一些代碼片段來說明這個想法。 'BroadcastSendingActivity'將在創建時發送一個廣播,它將被'BroadcastReceivingActivity'接收(假設它在發送廣播之前已經註冊爲接收器)。在你的情況下,選項卡的活動將是發件人,而主辦imageview的活動則是接收者。 –

+0

爲了驗證,我必須將Rate.java和BroadcastReceivingActivity中的BroadcastSendingActivity子類添加到具有tabhost的活動中? –