相关疑难解决方法(0)

在片段中显示片段viewpager

我有一个包含ViewPager的片段.ViewPager与包含一组片段的适配器相关联.

在加载父片段后,我遇到了一条IllegalStateException消息:java.lang.IllegalStateException: Recursive entry to executePendingTransactions.

一些研究使我得出结论,系统无法在另一个片段中显示片段,但是似乎有一些迹象表明可以通过使用ViewPager完成此操作(ViewPager中的一个错误与其他片段一起使用)).

实际上,如果我向我的父片段添加一个按钮,mPager.setAdapter(mAdapter)在按下时调用我的ViewPager,ViewPager会成功加载.这不太理想.

那么问题必须与片段生命周期有关.因此,我的问题是:有没有其他人找到解决这个问题的办法,如果是,怎么办?

有没有办法在片段事务之后延迟ViewPager上的适配器设置?

这是我的父片段代码:

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

    mView = inflater.inflate(R.layout.team_card_master, container, false);
    mViewPager = (ViewPager)mView.findViewById(R.id.team_card_master_view_pager);

    final Button button = (Button)mView.findViewById(R.id.load_viewpager_button);
    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            mViewPager.setAdapter(mAdapter);
            button.setVisibility(View.GONE);
        }
    });

    mAdapter = new ViewPagerAdapter(getFragmentManager());
 //     mViewPager.setAdapter(mAdapter);

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

和适配器:

public class ViewPagerAdapter extends FragmentPagerAdapter {
    public ViewPagerAdapter(FragmentManager fm) {
        super(fm);
    }

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

android android-lifecycle android-fragments android-viewpager android-nested-fragment

55
推荐指数
4
解决办法
4万
查看次数

Action Bar标签片段中的片段?

你可以在片段中放置片段以获取Action Bar中的选项卡吗?

我有一个Android(3.0/Honeycomb)应用程序,其主要活动有一个带有3个选项卡的Action Bar.选项卡将添加到我的activity的onCreate()方法中,并使用TabListener添加/删除选项卡片段.该代码与http://developer.android.com/guide/topics/ui/actionbar.html#Tabs上的示例几乎完全相同.

TabListener看起来像这样:

public class SwapOutTabListener implements ActionBar.TabListener {
    public SwapOutTabListener(Fragment fragment) {
        _fragment = fragment;
    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        ft.add(R.id.fragment_container, _fragment, null);
    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        ft.remove(_fragment);
    }

    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
        // do nothing
    }

    private Fragment _fragment;
}
Run Code Online (Sandbox Code Playgroud)

我的两个标签是简单的片段,它们只包含一个TextView,有点像这样(为清晰起见,删除了大多数属性):

<LinearLayout>
    <TextView android:text="Tab 1" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

但我的一个标签的片段更复杂,并包含两个嵌入的片段,有点像这样:

<LinearLayout>
    <fragment
        android:name="...Fragment_1"
        android:id="@+id/frag1"
    />
    <fragment
        android:name="...Fragment_2"
        android:id="@+id/frag2"
    />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

当用户选择此片段的选项卡时,将调用所有三个片段(选项卡片段以及两个嵌入片段)的所有启动生命周期方法(onStart(),onResume()).

但是当用户然后选择另一个选项卡时,只有选项卡片段获得任何生命周期结束方法(onPause(),onStop()等).两个嵌入的片段永远不会得到任何这些调用,也永远不会关闭.

重新选择选项卡时会出现问题,因为运行时在加载选项卡片段时会抱怨重复的片段ID: …

android android-fragments android-actionbar

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

将片段添加到片段中

是否可以在另一个片段中添加片段?

事实上,我有一个包含片段 F1Activity A,我想在片段 F1 中添加另一个片段 F1.1

在此处输入图片说明

我怎样才能做到这一点。

我希望你明白我的问题

android fragment android-activity

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