我想要一个选项卡布局,其中,在每个选项卡上有两个片段,一个在上面显示任务的进度,通过在3个选项卡中提供从开始到结束的输入来完成,和另一个在进度片段下面的主片段将接受输入。
我试了两天所有的方法:(
我的解决方案我尝试了一个包含两个framelayout的布局,用于将主片段添加到ViewPager的两个选项卡中,如下所示:
public static class ScreenSlidePagerAdapter extends
FragmentStatePagerAdapter {
public static ArrayList<Fragment> tabs_fragments = new ArrayList<Fragment>(
3);
public ScreenSlidePagerAdapter(FragmentManager fm,
ArrayList<Fragment> tabs) {
super(fm);
ScreenSlidePagerAdapter.tabs_fragments = tabs;
}
@Override
public Fragment getItem(int arg0) {
return tabs_fragments.get(arg0);
}
@Override
public int getCount() {
return tabs_fragments.size();
}
@Override
public int getItemPosition(Object object) {
if (tabs_fragments.contains(object)) {
return POSITION_UNCHANGED;
}
return POSITION_NONE;
}
public static void setItem(Fragment fr, int position) {
if (position <= 2 && position >= 0) {
tabs_fragments.remove(position);
tabs_fragments.add(position, fr);
} else
Log.d("adding tab", "wrong tab position to add fragment at");
}
}
在活动开始时,我执行此操作,请参见在主片段中用于加载不同标签位置的详细片段的i get tab position:
mPager = (ViewPager) findViewById(R.id.pager);
// fragments for pagers
ArrayList<Fragment> tabs = new ArrayList<Fragment>();
tabs.add(new FrEventDetails());
tabs.add(new FrEventDetails());
tabs.add(new FrRuleSave());
mPagerAdapter = new ScreenSlidePagerAdapter(getFragmentManager(), tabs);
mPager.setAdapter(mPagerAdapter);
bar = getActionBar();
bar.setTitle("Add Rule");
bar.setSubtitle("select event for rule");
bar.setDisplayShowTitleEnabled(true);
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
bar.setDisplayHomeAsUpEnabled(true);
bar.addTab(bar.newTab().setText("Select Event")
.setTabListener(new TabListener(mPager)));
bar.addTab(bar.newTab().setText("Select Action")
.setTabListener(new TabListener(mPager)));
bar.addTab(bar.newTab().setText("Save Rule")
.setTabListener(new TabListener(mPager)));
if (savedInstanceState != null) {
bar.setSelectedNavigationItem(savedInstanceState.getInt("tab", 0));
}
mPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// When swiping between pages, select the
// corresponding tab.
if (bar.getSelectedNavigationIndex() != position)
bar.setSelectedNavigationItem(position);
tab = position;
}
然后,当这个片段附加到活动时,我添加一个进度布局(title(对于一个框架布局,并基于选定的选项卡,添加另一个片段用于详细框架布局(用于输入))。如下所示:
public class FrEventDetails extends Fragment {
Context context;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = (Context) activity;
int tab = AddRule1.tab;
android.app.FragmentTransaction ft = activity.getFragmentManager()
.beginTransaction();
ft.add(R.id.fr_rule_progress_container, new FrProgress());
if (tab == 1) {
ft.replace(R.id.fr_event_input_container, new FrActionSelect(),
"cell1_1").commit();
} else if (tab == 0) {
ft.replace(R.id.fr_event_action_container, new FrEventSelect(),
"cell1_2").commit();
}
}
结果:它在第一个选项卡上漂亮地显示标题和细节,但在第二个选项卡上,只有主片段,当我刷到第三个片段并返回时,第二个片段被漂亮地填充(在显示1秒钟后),但第一个片段现在是空的。我不明白该怎么处理这个。
请给出一些解决这两天令人泪目的问题的办法
在我的应用程序中,我有5个片段。我使用底部导航来管理它们。但在第一个片段中,我有回收器视图,当我单击回收器项目时,我需要在此选项卡(第一个选项卡)中打开第二个片段。 现在,当我试图打开第二个片段时,他打开了所有标签上方。 这就是我如何打开第二个碎片
问题 假如你有一个HTML片断 (比如. 一个div 包含一对p 标签; 一个不完整的HTML文档) 想对它进行解析。这个HTML片断可以是用户提交的一条评论或在一个CMS页面中编辑body部分。 办法 使用Jsoup.parseBodyFragment(String html)方法. String html = "<div><p>Lorem ipsum.</p>"; Document doc =
我读过很多关于这方面的文章,但也有2012年或更早的文章。 (我只是打算从数据库中读取和插入一些数据。)
我使用TabLayout与Viewpager和有3个标签。我正在使用FragmentPagerAdapter来设置选项卡和它的片段。 我只想加载第一个选项卡的片断时,它是默认选择,并希望加载其他选项卡的片断在一个新的活动。 我尝试在位置1和位置2的情况下从getItem方法返回null,但它给出了异常。 提前多谢。
问题内容: 我是现代JS开发的新手,因此我需要有关此情况的帮助或建议。 情况: 我们有一个支持IE8(React 0.14)的React-Typescript-Redux项目。现在我们要升级到IE11和React 16,但应该支持IE8。 要求: 通过为每个构建使用不同的软件包和/或配置文件,减少浏览器版本之间的项目维护。 问题: 根据我到目前为止所做的研究,似乎无法通过选定的工具(npm,Web
在我的应用程序中,我使用了一个活动和两个片段。该应用程序使用带有容器的布局,因此片段是通过事务添加的。第一个片段包含列表视图,另一个片段包含列表视图项的详细视图。两个片段都使用setRetainInstance(true)。片段是通过替换事务添加的,并设置了addToBackStack(null)。列表片段包含一个实例变量,其中包含列表的一些信息。现在我正在切换到详细并按回,实例变量为null。我