Fragment内部根据ID获取父Activity的空间,设置错乱的问题记录
一个Activity中包含四个Fragmeng 最底下有四个Tab标签页进行切换,出现问题的根本我觉得就是因为这个Tab存在于Activity中,(作用域的问题!),如图:
因为新加的功能要在第一个Fragment中进行某个按钮操作会自动跳转到第二个Fragment,然后下面的Tab显示也要跟着变颜色和图标,最开始我是这样写的在onCreatView中把tab的对象都获取到然后for循环直接到第二个的话变色和图标:
for (int i = 0 ; i <ImageViews.size();i++ ){ if(1 == i){ ImageViews.get(i).setVisibility(View.VISIBLE); }else{ ImageViews.get(i).setVisibility(View.INVISIBLE); } } for (int i = 0 ; i <TextViews.size();i++ ){ if(1 == i){ TextViews.get(i).setTextColor(getResources().getColor(R.color.bluo)); }else{ TextViews.get(i).setTextColor(getResources().getColor(R.color.black_san)); } }然后诡异的事情就出现了!!!!!!!!!第一个Tab的文本文字颜色竟然变了,然后第二个的图标变了 文本却没变!!!找了很久也没找到原因,然后换了种写法:在Activity中设置改变tab图标和文字颜色的方法setTabAndColor(),在Fragment中这么调用
( (MainActivity)getActivity()).setColorAndText();
神奇的是竟然好了,没出现那种诡异事件了,个人觉得因为fragment存在于activity中,而tab存在于activity中,设置方法的地方作用域小于设置对象存在的作用域,但是既然设置没效果,为啥又有错误的显示效果,奇怪。反正得出这个教训,以后再不在fragment中改变activity中的视图对象了。。。。。。。