相关疑难解决方法(0)

IllegalStateException:<MyFragment>当前不在FragmentManager中

我知道这听起来像是FragmentStatePagerAdapter IllegalStateException的副本:<MyFragment>当前不在FragmentManager中, 但他的解决方案与我的情况无关.

我很少遇到以下崩溃:

java.lang.RuntimeException:无法暂停活动{MyActivity}:

...

引起:java.lang.IllegalStateException:片段MyFragment {40648258 id = 0x7f070051}当前不在android.support.v4.app.FragmentStatePagerAdapter的android.support.v4.app.FragmentManagerImpl.putFragment(MT:516)的FragmentManager中.saveState(MT:185)在android.support.v4.view.ViewPager.onSaveInstanceState(MT:881)

...

在Android.app.Activity.onSaveInstanceState(Activity.java:1138)的com.android.internal.policy.impl.PhoneWindow.saveHierarchyState(PhoneWindow.java:1522)的android.view.View.saveHierarchyState(View.java:6238) )在MyActivity.onSaveInstanceState(MT:336)的android.support.v4.app.FragmentActivity.onSaveInstanceState(MT:480)处

看起来这是我无法理解的奇怪代码FragmentStatePagerAdapter:

for (int i=0; i<mFragments.size(); i++) {
    Fragment f = mFragments.get(i);
    if (f != null) {
        if (state == null) {
            state = new Bundle();
        }
        String key = "f" + i;
        mFragmentManager.putFragment(state, key, f);
    }
}
Run Code Online (Sandbox Code Playgroud)

它看起来像适配器获取我FragmentmFragments但不能添加其状态FragmentManager.

我找不到任何方法在我的测试设备上重新创建它,只是从一些用户那里收到了这个.

我正在使用支持包v4.

有帮助吗?谢谢.

java android illegalstateexception android-fragments android-viewpager

34
推荐指数
5
解决办法
2万
查看次数

ViewPager碎片会随着时间的推移而被破坏?

我正在使用Android的support.v4软件包来开发包含多个Fragments 的ViewPager .

我试图在用户更改页面时隐藏视图.所以,我实现了一个OnPageChangeListener来监听我的适配器,并update()Fragment发生页面更改时调用我的方法.但是我得到了一个NullPointerException,我无法弄明白为什么.

这是代码:

public class MyActivity extends FragmentActivity implements
        OnPageChangeListener {

    private static final int NUM_ITEMS = 2;
    private ViewPager mPager;
    private static SpaceAdapter mAdapter;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_pager);

        mAdapter = new SpaceAdapter(getSupportFragmentManager());
        mPager = (ViewPager) findViewById(R.id.pager);
        mPager.setAdapter(mAdapter);

        mPager.setOnPageChangeListener(this);
}

    public static class SpaceAdapter extends FragmentPagerAdapter {

        public SpaceAdapter(FragmentManager fm) {
            super(fm);
        } …
Run Code Online (Sandbox Code Playgroud)

java android nullpointerexception android-fragments android-viewpager

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

Loaders和onLoaderReset Android

我在我的应用程序中实现了一个Loader来查询数据库中的数据.我通过实现LoaderCallbacks<Cursor>监听器来监听发生的变化.我遇到的问题是当onLoaderReset(Loader<Cursor> loader)我的数据发生变化时使用该方法,并且我想要使与加载器相关的任何数据无效并释放.在所有示例中,在此方法中有以下调用:

mAdapter.swapCursor(null);

但问题是我不使用适配器中光标的数据,我在我的应用程序中以其他方式使用它.

(onLoadFinished(Loader<Cursor> loader, Cursor data)例如,直接从返回的游标中)

        @Override
        public void onLoadFinished(Loader<Cursor> loader, Cursor data) {

            if (data.moveToFirst()) {
                TOTAL_CARDS = data.getCount();
                mView.createCards(TOTAL_CARDS);
            } else {
                TOTAL_CARDS = 0;
                mView.createCards(TOTAL_CARDS);
            }


        }
Run Code Online (Sandbox Code Playgroud)

这里要做的相应事情是什么,与...类似mAdapter.swapCursor.我对装载机没有多少经验,事实上我刚开始与他们合作,所以如果有人有解决方案,我会很感激.谢谢!

编辑:现在,我传递null到加载器,它的工作原理如下:

@Override
public void onLoaderReset(Loader<Cursor> loader) {
        loader = null;
}

};
Run Code Online (Sandbox Code Playgroud)

但这是正确的解决方案吗?

android loader android-loadermanager

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

片段未添加(不一致的崩溃)

在我MainActivity,我有:

@Override
protected void onResume() {
    super.onResume();

    checkForCrashes();
    checkForTutorial();
    checkForUpdates();
    setStore();
    setup();
}
Run Code Online (Sandbox Code Playgroud)

setup(),我打电话initializeTabs()回调:

protected void setup() {
    final Store s = getStore();
    setBackground();

    if (s == null) {
        unauthorizedHandler();
        return;
    }
    final Context mainActivity = this;
    fragments = getTabFragments();

    StoresController.getStoreDetails(s, mainActivity, new Callback<StoreDetailDecorator>() {
        @Override
        public void success(StoreDetailDecorator storeDetailDecorator, Response response) {
            s.prettyName = storeDetailDecorator.store.pretty_name;
            s.save();
            Log.v(TAG, s.prettyName);
            TextView toolbar_label = (TextView)findViewById(R.id.toolbar_label);
            toolbar_label.setText(MainActivity.getTruncatedMenuName(s.name()));

            SummaryTab t1 = (SummaryTab)fragments.get(0);
            t1.notifier = (SummaryTabLoadingNotifier)mainActivity;
            initializeTabs(s, fragments);
            t1.populateReport(); …
Run Code Online (Sandbox Code Playgroud)

android android-fragments fragmentpageradapter

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