[Android UI界面] tab_Host页面跳转,传值,刷新等问题汇总。
2015-07-20 00:26
615 查看
之前做了一个项目是关于Tab_Host的,现在完成了恰逢闲余写份总结,主要涉及里面遇到问题以及解决方案的。
(首先说明这份代码是在eoe 下载的,这里感谢分享的那位朋友,限于我的工程是公司的不能拿出来了,只能那这份原来的代码进行修改贴出来,欢迎拍砖);
效果如如下:
首先解决tab_host 的actitvty的跳转刷新,
public void onCheckedChanged()方法进行group监控点击不同的事件响应,但是也只有点击不同的事件才会响应,这样问题就来了:比如同一个actitvty进行 页面的缩放的的按钮就没有办法响应了。这里我是进行group立面的每一个RadioButton进行事件的处理 RadioButton.setOnClickListener().有人会说,不同的页面一旦显示一次当再次显示就不在刷新了,那么你可以这样设置一下页面的跳转:
看看和上面代码有何不同,不错就是这里: .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)//就是这里起作用
下面解决进行页面传值的问题:
首先进行tab_host 向各个页面的传值:这个和普通的传值一样没有区别,
在相应的DrawReportActivity获取这个数据就可以
其次进行不同actitvty 之间传值的说明:
比如在A.actitvty要求跳转到B.actitvty里面,这里这样进行的跳转:
TabTest.tabHost.setCurrentTabByTag(TabTest.TAB_LAST);
将上面代码里面的tabHost进行静态化,进行group的跳转过去,这样就显示需要跳转的页面了,传值呢?传值在这里可以采取进行广播的方法:
发送广播:
在注册Androidmanifest.xml进行声明:
得到相应的广播:
进行传值,我觉得如果数据不是很多的话,完全可以写个静态类,进行存放一些数据,
这样跳转actitvty类得到时候进行同时的数据存放就可以了。
最后奉上源代码,随时恭候拍砖!
(首先说明这份代码是在eoe 下载的,这里感谢分享的那位朋友,限于我的工程是公司的不能拿出来了,只能那这份原来的代码进行修改贴出来,欢迎拍砖);
import android.app.TabActivity; import android.content.Intent; import android.os.Bundle; import android.widget.RadioGroup; import android.widget.TabHost; import android.widget.RadioGroup.OnCheckedChangeListener; public class TabTest extends TabActivity{ private RadioGroup group; private TabHost tabHost; public static final String TAB_HOME="tabHome"; public static final String TAB_MES="tabMes"; public static final String TAB_TOUCH="tab_touch"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.maintabs); group = (RadioGroup)findViewById(R.id.main_radio); tabHost = getTabHost(); tabHost.addTab(tabHost.newTabSpec(TAB_HOME) .setIndicator(TAB_HOME) .setContent(new Intent(this,Main.class))); tabHost.addTab(tabHost.newTabSpec(TAB_MES) .setIndicator(TAB_MES) .setContent(new Intent(this,Main2.class))); tabHost.addTab(tabHost.newTabSpec(TAB_TOUCH) .setIndicator(TAB_TOUCH) .setContent(new Intent(this,TouchTest.class))); group.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.radio_button0: tabHost.setCurrentTabByTag(TAB_HOME); break; case R.id.radio_button1: tabHost.setCurrentTabByTag(TAB_MES); break; case R.id.radio_button2: tabHost.setCurrentTabByTag(TAB_TOUCH); break; default: break; } } }); } }
效果如如下:
首先解决tab_host 的actitvty的跳转刷新,
public void onCheckedChanged()方法进行group监控点击不同的事件响应,但是也只有点击不同的事件才会响应,这样问题就来了:比如同一个actitvty进行 页面的缩放的的按钮就没有办法响应了。这里我是进行group立面的每一个RadioButton进行事件的处理 RadioButton.setOnClickListener().有人会说,不同的页面一旦显示一次当再次显示就不在刷新了,那么你可以这样设置一下页面的跳转:
tabHost.addTab(tabHost .newTabSpec(TAB_NEXT) .setIndicator(TAB_NEXT) .setContent( new Intent(new Intent(this, DrawReportActivity.class)) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) ));
看看和上面代码有何不同,不错就是这里: .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)//就是这里起作用
下面解决进行页面传值的问题:
首先进行tab_host 向各个页面的传值:这个和普通的传值一样没有区别,
Intent intent_main = new Intent(this, DrawReportActivity.class); Bundle bundle = new Bundle(); bundle.putInt("page", 1); intent_main.putExtras(bundle); tabHost.addTab(tabHost .newTabSpec(TAB_LAST) .setIndicator(TAB_LAST) .setContent( new Intent(intent_main) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));
在相应的DrawReportActivity获取这个数据就可以
其次进行不同actitvty 之间传值的说明:
比如在A.actitvty要求跳转到B.actitvty里面,这里这样进行的跳转:
TabTest.tabHost.setCurrentTabByTag(TabTest.TAB_LAST);
将上面代码里面的tabHost进行静态化,进行group的跳转过去,这样就显示需要跳转的页面了,传值呢?传值在这里可以采取进行广播的方法:
发送广播:
Intent it = new Intent(action1); it.putExtra("url", et.getText().toString()); sendBroadcast(it);
在注册Androidmanifest.xml进行声明:
<receiver android:name="com.raq.tab.Broadcastreceiver"> <intent-filter> <action android:name="Broadcast_page_num" /> </intent-filter> </receiver>
得到相应的广播:
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class Broadcastreceiver extends BroadcastReceiver { public String url; public void onReceive(Context context, Intent intent) { url = intent.getExtras().getString("url"); } }
进行传值,我觉得如果数据不是很多的话,完全可以写个静态类,进行存放一些数据,
这样跳转actitvty类得到时候进行同时的数据存放就可以了。
最后奉上源代码,随时恭候拍砖!
相关文章推荐
- 解决The current branch is not configured for pull No value for key branch.master.merge found in config
- (C#)使用队列(Queue)解决简单的并发问题
- QueryPerformanceFrequency用法--Windows高精度定时计数
- Ques前端组件化体系
- POJ 1503 || HOJ 1435 Integer Inquiry
- swt 更新主UI线程
- winform进程间操作UI控件
- iOS开发——UI进阶篇(一)UITableView,索引条,汽车数据展示案例
- php中的register_shutdown_function和fastcgi_finish_request
- hdu 4740 The Donkey of Gui Zhou bfs
- 浅谈break 、continue、return,goto四种语句的区别。
- 浅谈break 、continue、return,goto四种语句的区别。
- 每天一个小知识点7( 4000 jQuer总结一)
- Ueditor实现自定义conttoller请求或跨域请求
- liunx命令3 attr、lsattr;特殊权限suid、sgid、sticky
- 12100 Printer Queue(优先队列)
- HDU 3998 Sequence
- mui 搜索框图标左对齐
- Arduino初探:让 Arduino 闪起来
- Printer Queue