相关疑难解决方法(0)

第二次打开SupportMapFragment时出错

当我第二次打开我的SupportMapFragment(Android maps v2)(调用setContentView)时,我收到以下错误:

01-28 16:27:21.374: E/AndroidRuntime(32743): FATAL EXCEPTION: main
01-28 16:27:21.374: E/AndroidRuntime(32743): android.view.InflateException: Binary XML file line #6: Error inflating class fragment
01-28 16:27:21.374: E/AndroidRuntime(32743):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
01-28 16:27:21.374: E/AndroidRuntime(32743):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
01-28 16:27:21.374: E/AndroidRuntime(32743):    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
01-28 16:27:21.374: E/AndroidRuntime(32743):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
01-28 16:27:21.374: E/AndroidRuntime(32743):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
01-28 16:27:21.374: E/AndroidRuntime(32743):    at android.view.View.inflate(View.java:16119)
01-28 16:27:21.374: E/AndroidRuntime(32743):    at mypackage.MyView.<init>(HitsView.java:26)
01-28 16:27:21.374: E/AndroidRuntime(32743):    at mypackage.MenuListFragment.onItemClick(MenuListFragment.java:133)
01-28 16:27:21.374: E/AndroidRuntime(32743):    at android.widget.AdapterView.performItemClick(AdapterView.java:298)
01-28 16:27:21.374: E/AndroidRuntime(32743):    at android.widget.AbsListView.performItemClick(AbsListView.java:1086)
01-28 16:27:21.374: E/AndroidRuntime(32743):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:2855)
01-28 16:27:21.374: E/AndroidRuntime(32743): …
Run Code Online (Sandbox Code Playgroud)

android supportmapfragment android-maps-v2

54
推荐指数
3
解决办法
3万
查看次数

IllegalArgumentException:在ViewPager中找不到用于片段--- ViewPager的id的视图

我遇到了困扰我好几天的问题.

ViewPager主要活动中有一个持有3 Fragment秒作为标签片段.在第一个片段中有一个ListView包含一些视图,哪个是最重要的视图,另一个视图ViewPager.我想在子中保存一些照片ViewPager,并在这里使用更多片段.

现在有麻烦:
当第一个 Fragment停止时(父节点中的第三个片段在ViewPager屏幕上显示)并恢复(用户切换到第二个片段),应用程序崩溃,调试器说:

java.lang.IllegalArgumentException: No view found for id 0x7f05008b (com.example.viewpager:id/sub_viewpager) for fragment ScreenSlidePageFragment
Run Code Online (Sandbox Code Playgroud)

我已经使用了,getChildFragmentManager()因为这是嵌套片段的情况.

以下是与父ViewPager中第一个片段对应的列表适配器的关键代码:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    int type = getItemViewType(position);
    switch (type) {
        case TYPE_BANNER:
            if (convertView == null) {
                convertView = mBannerView.getBannerView(parent);
            }
            mBannerView.update(convertView);
            break;
        case TYPE_ITEM:
            break;
    }
    return convertView;
}
Run Code Online (Sandbox Code Playgroud)

这是代码mBannerView …

android android-fragments android-viewpager

22
推荐指数
6
解决办法
3万
查看次数

片段被销毁后停止处理程序

我有一个Fragment设置a ListView并创建一个定期Handler更新Listview.然而,看起来它Handler仍然在Fragment被破坏后运行.

以下是代码.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    //boilerplate code

    final Handler handler = new Handler();
    handler.post(new Runnable() {
        @Override
        public void run() {
            assignAdapter();
            handler.postDelayed(this, 15000);
        }
    });

    return v;
}
Run Code Online (Sandbox Code Playgroud)

ListView销毁之后更新Fragment会导致应用程序崩溃.如何HandlerFragment被摧毁时使其停止?我也想知道如果有任何暂停应用程序的影响Handler也是如此.

android listview android-lifecycle android-fragments fragment-lifecycle

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

Android嵌套片段问题"java.lang.IllegalStateException:Activity已被销毁"

您可能知道Android支持嵌套片段,也可以通过API级别为17的支持库.所以基本上我正在尝试将嵌套片段添加到ViewPager的一个片段中,并熟悉这个新的好功能.

在第一次应用程序启动时,一切都按预期工作,即我可以添加子片段,浏览这些片段,处理后栈等.

但问题是当我通过单击"返回"按钮离开应用程序并重新启动应用程序时,我在大多数情况下得到以下异常,并非总是如此:

java.lang.IllegalStateException: Activity has been destroyed
    at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1342)
    at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
    at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)
    at com.cnlms.andnestedfragments.ui.fragments.FragWrapper.addChildFragment(FragWrapper.java:145)
    at com.cnlms.andnestedfragments.ui.fragments.FragWrapper.onActivityCreated(FragWrapper.java:96)
    at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1468)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:931)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
    at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461)
    at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163)
    at android.support.v4.view.ViewPager.populate(ViewPager.java:1012)
    at android.support.v4.view.ViewPager.populate(ViewPager.java:881)
    at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1366)
    at android.view.View.measure(View.java:15172)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at android.view.View.measure(View.java:15172)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:833)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
    at android.view.View.measure(View.java:15172)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2148)
    at android.view.View.measure(View.java:15172)
    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1848)
    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1100)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1273)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
    at android.view.Choreographer.doCallbacks(Choreographer.java:555)
    at android.view.Choreographer.doFrame(Choreographer.java:525)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
    at android.os.Handler.handleCallback(Handler.java:615) …
Run Code Online (Sandbox Code Playgroud)

android android-fragments

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

ChildFragmentManager java.lang.IllegalStateException:Activity已被销毁

我试图在viewpager中的另一个片段中添加一个片段getChildFragmentManager().我得到了以下错误,

java.lang.IllegalStateException:Activity已在android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1549)的android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:654)在android下被销毁.support.v4.app.BackStackRecord.commitAllowingStateLoss(BackStackRecord.java:625)at com.lakeba.gameon.userprofile.UserProfileContainerFragment.replaceFragment(UserProfileContainerFragment.java:72)

我试过这个解决方法,但仍然得到相同的错误.

UserProfileContainerFragment.java

public class UserProfileContainerFragment extends CustomFragment {


    private View rootView;
    private Fragment fragment1;

    public UserProfileContainerFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);
    }

    public static UserProfileContainerFragment newInstance() {
        UserProfileContainerFragment fragment = new UserProfileContainerFragment();
        return fragment;
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        rootView = inflater.inflate(R.layout.fragment_user_profile_container, container, false);

        if(savedInstanceState == null) {
            UserProfileFragment …
Run Code Online (Sandbox Code Playgroud)

java android android-fragments android-fragmentactivity

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

迁移到AndroidX之后,应用程序因尝试在null ref上调用androidx.fragment.app.FragmentManagerImpl.isDestroyed()而崩溃

完整的堆栈仅包含android核心代码:

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.fragment.app.FragmentManagerImpl.isDestroyed()' on a null object reference
    at androidx.fragment.app.Fragment.performDetach(Fragment.java:2844)
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1033)
    at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1237)
    at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:434)
    at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2075)
    at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1865)
    at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1820)
    at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1726)
    at androidx.fragment.app.FragmentManagerImpl$2.run(FragmentManagerImpl.java:150)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6669)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Run Code Online (Sandbox Code Playgroud)

在主活动中替换片段时会发生这种情况:

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.fragment.app.FragmentManagerImpl.isDestroyed()' on a null object reference
    at androidx.fragment.app.Fragment.performDetach(Fragment.java:2844)
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1033)
    at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1237)
    at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:434)
    at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2075)
    at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1865)
    at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1820)
    at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1726)
    at androidx.fragment.app.FragmentManagerImpl$2.run(FragmentManagerImpl.java:150)
    at …
Run Code Online (Sandbox Code Playgroud)

java android androidx

7
推荐指数
2
解决办法
1887
查看次数

带有嵌套片段的ViewPager?

我的问题

根据谷歌的文档:

您现在可以将片段嵌入片段中.这对于您希望将动态和可重用UI组件放入自身动态且可重用的UI组件的各种情况都很有用.例如,如果使用ViewPager创建 向左和向右滑动并占用大部分屏幕空间的 片段,则现在可以将片段插入到每个片段页面中.要嵌套片段,只需在要添加片段的片段上调用getChildFragmentManager().这将返回一个FragmentManager,您可以像通常从顶级活动那样使用它来创建片段事务.例如,这里有一些代码可以在现有的Fragment类中添加一个片段:

Fragment videoFragment = new VideoPlayerFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.video_fragment, videoFragment).commit();
Run Code Online (Sandbox Code Playgroud)

所以我创造了自己的PageFragment.而我PageFragmentAdapter的3页PageFragment.我还有6个片段:Fragment1,Fragment2,Fragment3,FragmentA,FragmentB,FragmentC.在我的MainActivity初始化我的六个片段,我ViewPager和它PageFragmentAdapter(它PageFragment自己初始化三个).

然后,我用这个方法来附上我的Fragment1,Fragment2,Fragment3每个页面(每个PageFragment的)PageFragmentAdapter:

PageFragmentAdapter tPageFragmentAdapter = new PageFragmentAdapter(getSupportFragmentManager());
tPageFragmentAdapter.setFirstPage(tFragment1);
tPageFragmentAdapter.setSecondPage(tFragment2);
tPageFragmentAdapter.setThirdPage(tFragment3);
Run Code Online (Sandbox Code Playgroud)

我可以回复(通过方法PageFragmentAdapter)片段并将"嵌套片段"放入我的PageFragment(当然onCreate())中,如:

getChildFragmentManager().beginTransaction()
.add(R.id.framelayout_history, mFragment)
.addToBackStack(null)
.commit();
Run Code Online (Sandbox Code Playgroud)

注意:我用它PageFragment.setNestedFragment() …

android nested android-fragments android-viewpager fragmentpageradapter

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

java.lang.IllegalStateException:使用片段销毁了活动

两天了,我正试图解决这个问题.我在网上和stackoverflow上搜索过,但我找不到我的问题的答案.

在我的应用程序中,我正在尝试实现两个选项卡.一个需要显示一个地图,在另一个选项卡中我将显示一个列表适配器.(使用ActionBarSherlock)

当我单击第二个选项卡然后单击第一个选项卡时,我得到一个例外:

10-08 01:27:45.203:E/AndroidRuntime(7082):java.lang.IllegalStateException:活动已被破坏

这是我的活动代码和我的片段类.(仅用于测试,我将CustomMapFragment类放两次).

    public class MapActivity extends SherlockFragmentActivity implements    LocationListener,TabListener{

    LatLng mLocation;
    GoogleMap map;

    //CustomMapFragment fragment1 = new CustomMapFragment();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //FragmentManager fm = getSupportFragmentManager();

        if (savedInstanceState == null) {
            setContentView(R.layout.activity_main);
            FragmentManager fm = getSupportFragmentManager();
            setActionBar();
            //fragment2 = new Fragment2(); 

            //FragmentTransaction ft = fm.beginTransaction();
            //ft.add(R.id.container, fragment1, "frag1");

            //ft.add(R.id.fragment_container, fragment2, "frag2");

            //ft.commit();
        }


    }

private void setActionBar() {

        ActionBar actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        CustomMapFragment frag1 = new CustomMapFragment();
        CustomMapFragment frag2 = …
Run Code Online (Sandbox Code Playgroud)

android android-fragments actionbarsherlock

5
推荐指数
0
解决办法
3663
查看次数

切换片段太快会导致:java.lang.IllegalStateException:无活动

我没有使用ViewPager,并且是我唯一拨打任何电话的地方Fragment交易是单击活动布局中导航栏上的按钮。

当我太快地切换到片段(如来回)时,会出现以下异常:

java.lang.IllegalStateException:没有活动

似乎是当我单击切换另一个Fragment而第一个尚未完全完成加载时。我正在使用FragmentActivity

谁能对此有所了解?

我要切换Fragment的代码:

fragmentManager.beginTransaction()
    .replace(R.id.container, old,
        fragment.getClass().getSimpleName())
    .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).commit();
Run Code Online (Sandbox Code Playgroud)

编辑:取出过渡解决了问题,但我想知道是否有一种方法可以实现过渡。我的理论是,过渡会延迟片段的生命周期,并在启动另一个片段事务时使活动为空。

android android-fragments

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

当我第二次导航到嵌套片段时,应用程序崩溃

我正在使用嵌套片段和片段加载良好.但是当我在此frameLayout中加载另一个片段并想要再次加载嵌套片段时,我的应用程序正在崩溃.

07-14 16:58:21.272: E/AndroidRuntime(1813): java.lang.IllegalStateException: Activity has been destroyed
07-14 16:58:21.272: E/AndroidRuntime(1813):     at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1342)
07-14 16:58:21.272: E/AndroidRuntime(1813):     at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
07-14 16:58:21.272: E/AndroidRuntime(1813):     at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)
07-14 16:58:21.272: E/AndroidRuntime(1813):     at me.kaidul.uhunt.Fragment1.onCreateView(Fragment1.java:23)
07-14 16:58:21.272: E/AndroidRuntime(1813):     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
07-14 16:58:21.272: E/AndroidRuntime(1813):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)
07-14 16:58:21.272: E/AndroidRuntime(1813):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
07-14 16:58:21.272: E/AndroidRuntime(1813):     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
07-14 16:58:21.272: E/AndroidRuntime(1813):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
07-14 16:58:21.272: E/AndroidRuntime(1813):     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429)
Run Code Online (Sandbox Code Playgroud)

我的父级Fragment类:

public class Fragment1 extends SherlockFragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment1, …
Run Code Online (Sandbox Code Playgroud)

android android-fragments

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

java.lang.IllegalStateException:活动已被销毁

我知道有几个类似的问题.

@Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            //...

            getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, new LoginFragment()).commit();
        }

        @Override
        protected void onSaveInstanceState(Bundle outState) {
            super.onSaveInstanceState(outState);

            Log.i(TAG, "DZActivity onSaveInstanceState");
        }

        @Override
        public void onRequestStarted() {

            DZActivity.this.runOnUiThread(new Runnable() {

                @Override
                public void run() {

                    Log.i(TAG, "DZActivity onRequestStarted");

                    getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new ProgressFragment()).commit();
                }
            });
        }

        @Override
        public void onSignIn(String accessToken) {

            DZActivity.this.runOnUiThread(new Runnable() {

                @Override
                public void run() {

                    Log.i(TAG, "DZActivity onSignIn");

                    getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new HomeFragment()).commit();
                }
            });
        }
Run Code Online (Sandbox Code Playgroud)

按下后退我第二次启动我的应用程序,在按"登录"后,我得到:

08-07 18:02:54.609: I/DZActivity(3302): DZActivity onCreate
08-07 18:02:54.659: I/DZActivity(3302): DZActivity onResume …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-fragmentactivity

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