相关疑难解决方法(0)

onSaveInstanceState限制?

由于onRetainNonConfigurationInstance我的弃用越来越多地用于配置更改.由于我使用ViewPager来保存我的主要片段,我无法使用setRetainInstance,这限制了我的配置更改以使用onSaveInstanceState,就像标准的Activity或View一样.

它完美地运行没有任何问题,但我现在通过它传递一个相当大的Serializable数据集,这使我想让社区输入是否是一个好主意.

tl; dr:onSaveInstanceState对你传递的内容有大小限制吗?

android

16
推荐指数
1
解决办法
2299
查看次数

方向改变后,片段对mActivity的引用变为null.片段状态维护无效

我的应用程序包含几个片段.到目前为止,我已将它们的引用存储在自定义的Application对象中,但我开始认为我做错了.

当我意识到我的片段对mActivity的所有引用在方向改变后变为null时,我的问题就开始了.因此,当我在方向更改后调用getActivity()时,会抛出NullPointerException.我已经检查过我的片段的onAttach()在调用getActivity()之前被调用,但它仍然返回null.

以下是我的MainActivity的剥离版本,它是我的应用程序中唯一的活动.

public class MainActivity extends BaseActivity implements OnItemClickListener,
        OnBackStackChangedListener, OnSlidingMenuActionListener {

    private ListView mSlidingMenuListView;
    private SlidingMenu mSlidingMenu;

    private boolean mMenuFragmentVisible;
    private boolean mContentFragmentVisible;
    private boolean mQuickAccessFragmentVisible;

    private FragmentManager mManager;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        /*
         * Boolean variables indicating which of the 3 fragment slots are visible at a given time
         */
        mMenuFragmentVisible = findViewById(R.id.menuFragment) != null;
        mContentFragmentVisible = findViewById(R.id.contentFragment) != null;
        mQuickAccessFragmentVisible = findViewById(R.id.quickAccessFragment) != null;

        if(!savedInstanceState != null) {
            if(!mMenuFragmentVisible && mContentFragmentVisible) { …
Run Code Online (Sandbox Code Playgroud)

android android-lifecycle android-fragments android-memory

4
推荐指数
1
解决办法
6872
查看次数

如何在MainActivity中获取ViewPager创建的fragment的元素?

我有几个用ViewPager. 我在 MainActivity 的方法中addOnPageChangeListener添加了一个,它给出了所选片段的位置。ViewPageronCreate

尽管我通过声明 a 来防止片段自行销毁setOffscreenPageLimit,但我仍然没有弄清楚如何从 MainActivity 访问片段,因为简单地使用findViewById会返回空对象异常。

我想做的事:

我想访问片段的元素,例如布局和滚动视图,OnPageListenerViewPager

mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

@Override
    public void onPageSelected(int i) {

        if(i == 0) {
            // Do something with the first fragment.
        } else if(i == 1) {
            // Do something with the second fragment.
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

使用ViewPagerFragmentPagerAdapter

public class SectionsPagerAdapter extends FragmentPagerAdapter {

    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public …
Run Code Online (Sandbox Code Playgroud)

java android android-fragments android-viewpager

1
推荐指数
1
解决办法
1601
查看次数