java – Android – 片段不直接更新彼此旁边的标签
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Android – 片段不直接更新彼此旁边的标签,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3316字,纯文字阅读大概需要5分钟。
内容图文
![java – Android – 片段不直接更新彼此旁边的标签](/upload/InfoBanner/zyjiaocheng/732/c52195030dfe42dd905e098ca8494b6c.jpg)
我有一个FragmentActivity,其中包含四个片段布局中显示的片段.这些选项卡用于在我的数据库中添加或删除内容,并按以下顺序显示:艺术家 – 流派 – 专辑 – 歌曲. “相册”选项卡包含数据库中所有艺术家和流派的微调器,并且应当在各自的选项卡中添加艺术家或类型时更新这些微调器.这适用于Artist选项卡;但是,当我在“流派”选项卡中添加或删除某些内容时,除非我将选项卡更改为“艺术家”,或者转到单独的“活动”然后返回,否则更改将不会显示在“相册”中.
我不明白的问题是,当我将标签布局更改为艺术家 – 流派 – 歌曲 – 专辑时,一切都运行得很好.看来这些选项卡只在他们查看单独的活动或片段时才更新,然后返回到应该进行更改的选项卡.我也知道我用来刷新微调器的sql或方法不是问题,因为我也尝试将布局改为Genre – Artist – Album – Song.在这种情况下,类型更新会成功反映在相册中,但是艺术家中的那些更新不会,直到我将两个标签移离相册.
很难解释清楚比这更清楚,如果需要我可以发布我的代码,但似乎问题与直接在彼此旁边的选项卡之间导航有关.
我还尝试在我的类型片段中扩充添加相册布局,然后在添加或删除类型时更新微调器.
这是AddGenreFragment:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View v = inflater.inflate(R.layout.add_genre_layout, container, false);
addAlbum = inflater.inflate(R.layout.add_album_layout, container, false);
spinGenre = (Spinner) addAlbum.findViewById(R.id.spinGenre);
return v;
}
然后在删除方法中:
// Refresh the spinners in Add Album
ArrayList<String> genreList = dbh.getAllGenres(); // Return all the genres in the database
if (!genreList.isEmpty()) {
// Set the genre drop down box to be populated by all genres in the database
adapterGenre = new ArrayAdapter<String>(addAlbum.getContext(),
android.R.layout.simple_spinner_dropdown_item, genreList);
adapterGenre.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinGenre.setAdapter(adapterGenre);
}
编辑:
我在一个不同的问题上遇到这个问题后终于找到了解决这个问题的方法.它没有更新和正常工作的原因是因为我使用带有片段的ViewPager作为我的选项卡适配器. ViewPager的默认设置是一次最多加载3个页面或片段.因此,如果用户从某个选项卡移开3个选项卡,则会删除原始选项卡,并在重新选择原始选项卡时再次调用onCreate.
要解决这个问题,我只需将此行添加到我的TabsAdapter类的构造函数中:
mViewPager.setOffscreenPageLimit(NUMBER_OF_TABS - 1);
这最终解决了我遇到的问题,以及一些已经出现的问题.
解决方法:
要解决这个问题,您必须了解ViewPager的工作原理.
在ViewPager中设置适配器时,ex 4 Fragments.我们打电话给A | B | C | D |
从活动X导航到活动Y,其中ViewPager包含上述片段.
X --> Y
|--> | A | B | C | D |
呈现Y的视图时,即显示片段A,
Y
| A | B |
同时片段B在管道中生成.
当您移动到片段B时,C在管道中生成,A仍然存在.
Y
| A | B | C |
您在A中所做的任何更改都会在B中反映出来.
当您移动到片段C时,D在管道中生成,B仍然存活. A被杀了
Y
| B | C | D |
当你移动到D时,C被保留,B被杀死.
Y
| C | D |
当你现在回到C时,B会在第一次创建时生成新填充的数据.
Y
| B | C | D |
现在,可以获得在第二步中在A中更改数据时必须反映的更改.可以在下一步看到.
当你现在回到B时,A会在第一次创建时生成新填充的数据.
Y
| A | B | C |
ViewPager在两侧缓存相邻视图,除非通过移动到另一个活动或移动两个视图来强制重建/刷新视图,因此不会渲染对效果视图进行的任何更改是相邻屏幕.你正在经历同样的事情这是ViewPager的默认行为.
将A,B,C,D与您的标签进行比较,以解决此问题,请查看Update ViewPager dynamically?
>确保使用FragmentStatePagerAdapter而不是FragmentPagerAdapter,因为它不会杀死碎片.
内容总结
以上是互联网集市为您收集整理的java – Android – 片段不直接更新彼此旁边的标签全部内容,希望文章能够帮你解决java – Android – 片段不直接更新彼此旁边的标签所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。