博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android tab_Host页面跳转,传值,刷新等问题汇总
阅读量:6326 次
发布时间:2019-06-22

本文共 4609 字,大约阅读时间需要 15 分钟。

之前做了一个项目是关于Tab_Host的,现在完成了恰逢闲余写份总结,主要涉及里面遇到问题以及解决方案的。

(首先说明这份代码是在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进行声明:
得到相应的广播: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类得到时候进行同时的数据存放就可以了。

代码:

转载地址:http://sdgaa.baihongyu.com/

你可能感兴趣的文章
子域名信息收集攻略
查看>>
[Android]开发数独游戏思路分析过程
查看>>
SpreadJS 类Excel表格控件 - V12 新特性详解
查看>>
理解并取证:IPv6与IPv4在报文结构上的区别
查看>>
小白该如何学习Linux操作系统(2)
查看>>
Python写各大聊天系统的屏蔽脏话功能原理
查看>>
Hibernate与Spring集成示例
查看>>
EOS主网上线只是开始,如何运营决定未来
查看>>
北京市推微博实名制之我见
查看>>
如何连接用户?苹果三星是该学习一下国产手机了
查看>>
不用Visual Studio,5分钟轻松实现一张报表
查看>>
我想团:聚划算的反向电子商务实践
查看>>
LVS、Nginx和HAProxy负载均衡器对比总结
查看>>
探索ansible runner的源码及执行api原理
查看>>
IDG资本1亿美元扶持“90后”
查看>>
Splunk:系统调优、商业决策二合一
查看>>
发力智能硬件,HTC能否抢到风口
查看>>
PHP5中数组函数总结篇
查看>>
浅谈FPGA电脑
查看>>
C# ??(问问,问号问号)运算符,可空值(申明加?(问号))的克星
查看>>