我目前有一个包含5个标签的tabhost。在其中一个选项卡上,我有一个ImageView,当创建选项卡时,它会通过POST拉取数据以显示一个数字。我想知道如何从一个标签活动(比如Rate.java)我可以调用该方法来更新超过其中一个标签的ImageView。
我知道这不是很具体,但我想是我写的,所以你知道我在说什么。
如果您需要更多信息,请告诉我。
talitore
答案 0 :(得分:1)
根据所提供的信息,我们可以立即想到两个选项:
Activity
),它采用自定义侦听器接口和更新方法。让您的标签活动扩展BaseActivity和ImageView的活动实现它。然后,您可以从选项卡活动中调用侦听器上的update方法(将它们实例化为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);
}
}
}
请注意,我没有测试代码,但我相信你能够找出我可能犯的任何错误。 :)