gpt4 book ai didi

android - fragment 中的 getView 有时会返回 null

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:45:33 25 4
gpt4 key购买 nike

我有一个带有 ViewPager 的应用程序,其中包含两个 fragment :一个主 fragment 和一个列表 fragment 。如果选择了列表中的某些内容,则会引发一个在 Activity 中处理的事件。 Activity 切换到主 fragment 并调用“setSelectedItem”方法。在这个方法中,我使用 getView() 查找特定 View 以根据所选项目更改文本。

大部分时间都有效,但有时 getView 会返回 null,我不知道为什么。

pagerAdapter 在 Activity 的 OnCreate 中创建:

this.mPagerAdapter  = new PagerAdapter(super.getSupportFragmentManager());
ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setAdapter(this.mPagerAdapter);

寻呼机适配器在其构造函数中创建两个 fragment 的实例:

public PagerAdapter(FragmentManager fm) {
super(fm);
this.main = MainFragment.newInstance();
this.list = ListFragment.newInstance();
}

这是在从列表中选择项目时调用的 Activity 中的方法:

ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setCurrentItem(0, true);
((MainFragment)mPagerAdapter.getItem(0)).setSelectedItem(id);

最后,这是导致问题的 MainFragment 中的 setSelectedItem 方法中的一行:

TextView s = (TextView)getView().findViewById(R.id.CurrentSelection);

我尝试了一些我读到的东西,但问题仍然不规律地发生。

最佳答案

首先,我不是 100% 确定,但我有几点需要提及。首先,我不喜欢你那样使用 thissuper,它们似乎含糊不清,我相信更好的方法是更准确地考虑预编译你知道他们的值(value)。我认为,如果您将代码更改为如下所示,将会有所帮助(只是一种预感)。

// No need for 'this' and 'super' here, you are within the activity
mPagerAdapter = new PagerAdapter(getSupportFragmentManager());
ViewPager pager = (ViewPager)findViewById(R.id.viewpager);
pager.setAdapter(mPagerAdapter);

public PagerAdapter(FragmentManager fm) {
super(fm);
// No need for 'this' here, you are within the class
main = MainFragment.newInstance();
list = ListFragment.newInstance();
}

// No need for 'super' here, you are within the activity
ViewPager pager = (ViewPager)findViewById(R.id.viewpager);
pager.setCurrentItem(0, true);
((MainFragment)mPagerAdapter.getItem(0)).setSelectedItem(id);

// Here use 'getActivity()' instead of 'getView()'
TextView s = (TextView)getActivity().findViewById(R.id.CurrentSelection);

让我知道发生了什么,干杯。

关于android - fragment 中的 getView 有时会返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10479525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com