2011-12-04 114 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的活动中? –