fragmenttabhost 传参问题

蘋果虫 2015-06-26 02:06:54
使用fragmenttabhost做了一个导航,因为需要,我需要在启动对应的tab时,传入一个参数,但不知道怎么传?求指导……
这样行吗:fragmentTabHost.add(xx,xx.class,bundler);如果把参数放进bundler中,那么在fragment界面中,如果获取这个对象呢?
...全文
508 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yzy8788 2015-09-10
  • 打赏
  • 举报
回复
回看#3楼已经早早的提醒了“fragment的onCreateView方法里调用getArguments()获得Bundle”,只怪自己不思考啊
yzy8788 2015-09-10
  • 打赏
  • 举报
回复
我用的是FragmentTabHost而非TabHost 现在问题解决了,发现FragmentTabHost其实灰常简单,只怪自己对android编程知识的匮乏 MainActivity类关键代码如下:
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        FragmentTabHost tabHost = (FragmentTabHost) findViewById(R.id.tabhost);
        tabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
        
        Bundle bundle = new Bundle();
        bundle.putString("status", "1");
        tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("wait"),Fragment1.class,bundle);
        
        bundle = new Bundle();
        bundle.putString("status", "2");
        tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("ing"),Fragment1.class,bundle);
        
        bundle = new Bundle();
        bundle.putString("status", "3");
        tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("ed"),Fragment1.class,bundle);
    }
Fragment1类关键代码如下
Bundle bundle = this.getArguments();
		_status = bundle.getString("status");
最开始总是误区onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)这里的savedInstanceState是传递过来的Bundle
节操在此 2015-09-09
  • 打赏
  • 举报
回复
引用 9 楼 u014027694 的回复:
[quote=引用 6 楼 yzy8788 的回复:] [quote=引用 3 楼 u014027694 的回复:] [quote=引用 楼主 luofang11 的回复:] 使用fragmenttabhost做了一个导航,因为需要,我需要在启动对应的tab时,传入一个参数,但不知道怎么传?求指导…… 这样行吗:fragmentTabHost.add(xx,xx.class,bundler);如果把参数放进bundler中,那么在fragment界面中,如果获取这个对象呢?
要传参的fragment调用fragment.setarguments(bundle),fragment的onCreateView方法里调用getArguments()获得Bundle[/quote] FragmentTabHost里面是这样启动Fragment的
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("wait"), Fragment1.class,null);
该如何向你说的这样,setarguments呢? @节操在此 [/quote]
TabHost.OnTabChangeListener mTabChangeListener = new TabHost.OnTabChangeListener() {
		public void onTabChanged(String tabId) {
			Fragment frame = Fragment.instantiate(HomeActivity.this, tabId);
			frame.setArguments(null);
			replaceFragment(frame);
		}
	};
你要做的是在tab切换时往Fragment传参是吧?如果是的话在tabchange里做处理[/quote] 因为初始化TabSpec时是这样的
TabHost.TabSpec specScan = mTabHost.newTabSpec(ScanFragment.class.getName());
所以onTabChanged方法的参数tabId代表的是fragment的名字
节操在此 2015-09-09
  • 打赏
  • 举报
回复
引用 6 楼 yzy8788 的回复:
[quote=引用 3 楼 u014027694 的回复:] [quote=引用 楼主 luofang11 的回复:] 使用fragmenttabhost做了一个导航,因为需要,我需要在启动对应的tab时,传入一个参数,但不知道怎么传?求指导…… 这样行吗:fragmentTabHost.add(xx,xx.class,bundler);如果把参数放进bundler中,那么在fragment界面中,如果获取这个对象呢?
要传参的fragment调用fragment.setarguments(bundle),fragment的onCreateView方法里调用getArguments()获得Bundle[/quote] FragmentTabHost里面是这样启动Fragment的
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("wait"), Fragment1.class,null);
该如何向你说的这样,setarguments呢? @节操在此 [/quote]
TabHost.OnTabChangeListener mTabChangeListener = new TabHost.OnTabChangeListener() {
		public void onTabChanged(String tabId) {
			Fragment frame = Fragment.instantiate(HomeActivity.this, tabId);
			frame.setArguments(null);
			replaceFragment(frame);
		}
	};
你要做的是在tab切换时往Fragment传参是吧?如果是的话在tabchange里做处理
=10_01= 2015-09-08
  • 打赏
  • 举报
回复
引用 5 楼 yzy8788 的回复:
引用 4 楼 Li_Jun__ 的回复:
接口回调。。
@Li_Jun__ 可以说的再详细点吗?
你在 Fragment 中获得宿主 Fragment 的实例
MainActivity main = (MainActivity) getActivity();
, 通过 Activity 的实例获取值。 这个比回调简单
=10_01= 2015-09-08
  • 打赏
  • 举报
回复
引用 5 楼 yzy8788 的回复:
引用 4 楼 Li_Jun__ 的回复:
接口回调。。
@Li_Jun__ 可以说的再详细点吗?
FragmentTabHost addTab() 并不是 Fragment 的实例,貌似不能通过
f.setArguments(args);
来传参。
yzy8788 2015-09-08
  • 打赏
  • 举报
回复
引用 3 楼 u014027694 的回复:
[quote=引用 楼主 luofang11 的回复:] 使用fragmenttabhost做了一个导航,因为需要,我需要在启动对应的tab时,传入一个参数,但不知道怎么传?求指导…… 这样行吗:fragmentTabHost.add(xx,xx.class,bundler);如果把参数放进bundler中,那么在fragment界面中,如果获取这个对象呢?
要传参的fragment调用fragment.setarguments(bundle),fragment的onCreateView方法里调用getArguments()获得Bundle[/quote] FragmentTabHost里面是这样启动Fragment的
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("wait"), Fragment1.class,null);
该如何向你说的这样,setarguments呢? @节操在此
yzy8788 2015-09-08
  • 打赏
  • 举报
回复
引用 4 楼 Li_Jun__ 的回复:
接口回调。。
@Li_Jun__ 可以说的再详细点吗?
=10_01= 2015-09-07
  • 打赏
  • 举报
回复
接口回调。。
节操在此 2015-09-07
  • 打赏
  • 举报
回复
引用 楼主 luofang11 的回复:
使用fragmenttabhost做了一个导航,因为需要,我需要在启动对应的tab时,传入一个参数,但不知道怎么传?求指导…… 这样行吗:fragmentTabHost.add(xx,xx.class,bundler);如果把参数放进bundler中,那么在fragment界面中,如果获取这个对象呢?
要传参的fragment调用fragment.setarguments(bundle),fragment的onCreateView方法里调用getArguments()获得Bundle
yzy8788 2015-09-06
  • 打赏
  • 举报
回复
请问楼主这个问题是如何解决的呢? 把参数放进bundler中,fragment界面里 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) savedInstanceState的值还是null
蘋果虫 2015-06-26
  • 打赏
  • 举报
回复
在线等啊。。。。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧