关于父Activity更新UI

LengFengKong 2014-01-11 11:17:11
在一个UI里面放一个TabHost,对应的Activity是A,TabHost里面有两个Tab页,对应的Activity分别是B与C,现在A(UI)里面有个按钮,发送消息到服务器处理后回来,然后要根据消息更新B或者C的UI,如果当前Tab的页面是B就更新B的UI,是C则更新C的UI,请问我在Activity(A)里面怎么去更新B或者C的UI?
...全文
149 点赞 收藏 9
写回复
9 条回复
麦田捕手 2014年01月13日
可以通过接口监听的方式实现,异或广播发送消息
回复 点赞
limengwe 2014年01月13日
引用 6 楼 LengFengKong 的回复:
[quote=引用 5 楼 OnlyOneCoder 的回复:] ABC三个没有父子关系,是三个独立的Activity啊,
是这样的,我现在做一个平板项目,一些操作按钮在屏幕顶部是不会动的,下面有几个Activity是会改变的,懂了吗?[/quote] 哦,刚理解错了,用广播什么的应该可以,更新B还是C这个没什么问题,设置一个标识就好了; 如果没有好的解决方法的话可以考虑使用fragment
回复 点赞
哎,真难 2014年01月13日
引用 2 楼 LengFengKong 的回复:
[quote=引用 1 楼 heaimnmn 的回复:] 这比较麻烦,首先在B和C里面要写入更新UI的方法,然后在A里面开启一个线程监听A的消息事件,tabhost里面每个页面都有个tag,在你开始生成的时候就配置好了,通过那个tag去判断是B还是C去更新,然后用线程调用B和C里面更新UI的方法。。。
能具体点吗?[/quote]额,具体点,我不知道你怎么刷新的啊,,,
回复 点赞
LengFengKong 2014年01月13日
引用 5 楼 OnlyOneCoder 的回复:
ABC三个没有父子关系,是三个独立的Activity啊,
是这样的,我现在做一个平板项目,一些操作按钮在屏幕顶部是不会动的,下面有几个Activity是会改变的,懂了吗?
回复 点赞
limengwe 2014年01月13日
ABC三个没有父子关系,是三个独立的Activity啊,
回复 点赞
LengFengKong 2014年01月11日
引用 1 楼 heaimnmn 的回复:
这比较麻烦,首先在B和C里面要写入更新UI的方法,然后在A里面开启一个线程监听A的消息事件,tabhost里面每个页面都有个tag,在你开始生成的时候就配置好了,通过那个tag去判断是B还是C去更新,然后用线程调用B和C里面更新UI的方法。。。
能具体点吗?
回复 点赞
哎,真难 2014年01月11日
这比较麻烦,首先在B和C里面要写入更新UI的方法,然后在A里面开启一个线程监听A的消息事件,tabhost里面每个页面都有个tag,在你开始生成的时候就配置好了,通过那个tag去判断是B还是C去更新,然后用线程调用B和C里面更新UI的方法。。。
回复 点赞
tcmakebest 2014年01月11日
看下这段代码应该能懂了吧:
	TabHost myTabHost;
	Context c;
	private ActivityPage_101 activityOne;
	private ActivityPage_102 activityTwo;
	private ActivityPage_103 activityThree;
	private ActivityPage_104 activityFour;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.layout_tabhost);
		c = this;
		myTabHost = this.getTabHost();
		initTabHost(c,myTabHost,
				new TabHost.TabSpec[]{
					myTabHost.newTabSpec("a").setIndicator(composeLayout("我的任务", R.drawable.tab_weixin_pressed)).setContent(new Intent(c,ActivityPage_101.class)),
					myTabHost.newTabSpec("b").setIndicator(composeLayout("通讯录", R.drawable.tab_address_pressed)).setContent(new Intent(c,ActivityPage_102.class)),
					myTabHost.newTabSpec("c").setIndicator(composeLayout("查询", R.drawable.tab_find_frd_pressed)).setContent(new Intent(c,ActivityPage_103.class)),
					myTabHost.newTabSpec("d").setIndicator(composeLayout("我", R.drawable.tab_settings_pressed)).setContent(new Intent(c,ActivityPage_104.class))
				});
		initSubActivity();
	}
	
	public void initTabHost(final Context context,
			final TabHost tabHost, TabSpec[] tabSpecs) {

		for (TabSpec tabSpec : tabSpecs) {
			tabHost.addTab(tabSpec);
		}
		final TabWidget tabWidget = tabHost.getTabWidget();
		for (int i = 0; i < tabWidget.getChildCount(); i++) {
			tabWidget.getChildAt(i).getLayoutParams().height = zoom(context,50);
		}
		for (int i = tabWidget.getChildCount() - 1; i >= 0; i--) {
			tabHost.setCurrentTab(i);
		}
	}
	
	private void initSubActivity()
	{
		try {
			FrameLayout fl = myTabHost.getTabContentView();
			for (int i1 = 0; i1 < fl.getChildCount(); i1++) {
				View v = fl.getChildAt(i1);
				Object a = v.getContext();
				if (a instanceof ActivityPage_101) {
					activityOne = (ActivityPage_101) a;
				}
				if (a instanceof ActivityPage_102) {
					activityTwo = (ActivityPage_102) a;
				}
				if (a instanceof ActivityPage_103) {
					activityThree = (ActivityPage_103) a;
				}
				if (a instanceof ActivityPage_104) {
					activityFour = (ActivityPage_104) a;
				}
			}
		} catch (Exception ex) {
			//ActionTool.showException(c, ex);
		}
	}
<?xml version="1.0" encoding="utf-8"?>
<TabHost
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@android:id/tabhost" 
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  	<LinearLayout android:orientation="vertical"
		android:layout_width="fill_parent" android:layout_height="fill_parent">
		<!-- 实现Tab标签的居底主要是通过设置属性 android:layout_weight="1" -->
		<!-- 还要注意FrameLayout标签的位置,要写在TabWidget标签的前面 -->
		<FrameLayout android:id="@android:id/tabcontent"
			android:layout_weight="1" android:layout_width="fill_parent"
			android:layout_height="fill_parent" />

		<TabWidget android:id="@android:id/tabs"
			android:layout_alignParentBottom="true" android:layout_width="fill_parent"
			android:layout_height="wrap_content" />
	</LinearLayout>
</TabHost>
回复 点赞
tcmakebest 2014年01月11日
在 A 页面 Create 的时候就能够获取 b 和 c 的实例, 更新 UI 只是再写个方法调用罢了
回复 点赞
发动态
发帖子
Android
创建于2009-10-09

4.6w+

社区成员

9.0w+

社区内容

移动平台 Android
社区公告
暂无公告