当我向上选择选项卡时,它起作用,但当我返回时,内容变成白色。LogCat显示:
致命异常:main java.lang.IllegalArgumentException:在Android.support.v4.app.FragmentManagerImpl.MoveToState(FragmentManager.java:903)在Android.support.v4.app.FragmentManagerImpl.MoveToState(FragmentManager.java:1088)在Android.support.v4.app.FragmentManagerImpl.MoveToState)在Android.support.v4.app.FragmentManager.ExecpendingActions(FragmentManager)中找不到id476)在com...viewpager.TabsAdapter.onTabSelect(TabsAdapter.java:76)在com.actionbarsherlock.internal.app.actionbarimpl.selectTab(actionbarimpl.java:526)在com.actionbarsherlock.internal.app.actionbarimpll$Tabimpl.select(actionbarimpl.java:907)在com.actionbarsherlock.internal.widget.scrollingtabcontainerview$TabClickListener.onClick(
我的班级:
public class TabsAdapter extends FragmentPagerAdapter implements
ActionBar.TabListener, ViewPager.OnPageChangeListener {
private final Context mContext;
private final ActionBar mActionBar;
private final ViewPager mViewPager;
private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();
ProgressDialog dialog;
static final class TabInfo {
private final Class<?> clss;
private final Bundle args;
TabInfo(Class<?> _class, Bundle _args) {
clss = _class;
args = _args;
}
}
public TabsAdapter(SherlockFragmentActivity activity, ViewPager pager) {
super(activity.getSupportFragmentManager());
mContext = activity;
mActionBar = activity.getSupportActionBar();
mViewPager = pager;
mViewPager.setAdapter(this);
mViewPager.setOnPageChangeListener(this);
}
public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args) {
TabInfo info = new TabInfo(clss, args);
tab.setTag(info);
tab.setTabListener(this);
mTabs.add(info);
mActionBar.addTab(tab);
notifyDataSetChanged();
}
public int getCount() {
return mTabs.size();
}
public SherlockFragment getItem(int position) {
TabInfo info = mTabs.get(position);
return (SherlockFragment) Fragment.instantiate(mContext,
info.clss.getName(), info.args);
}
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
}
public void onPageSelected(int position) {
mActionBar.setSelectedNavigationItem(position);
}
public void onPageScrollStateChanged(int state) {
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
mViewPager.setCurrentItem(tab.getPosition());
Object tag = tab.getTag();
for (int i = 0; i < mTabs.size(); i++) {
if (mTabs.get(i) == tag) {
mViewPager.setCurrentItem(i);
}
}
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
}
更新:
保存ViewPager的方法:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ConnectionChangeReceiver cm = new ConnectionChangeReceiver();
cm.onReceive(this, getIntent());
mViewPager = new ViewPager(this);
mViewPager.setId(R.id.viewpager);
setContentView(mViewPager);
RssReaderTask.setRssUrl(this,
"http://url?type=rss");
SchedulerManager.getInstance().saveTask(this, "0 9-20 * * 1,2,3,4,5",
RssReaderTask.class);
SchedulerManager.getInstance().restart(this, RssReaderTask.class);
NotifyClass.getInstance().setSlideCreate(true);
if (!isOnline()) {
showDialog(DIALOG_ERROR_CONNECTION);
Log.d("TAG", "TRUE");
}
if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE) {
// do nothing
} else {
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
globalvar = new GlobalVariable();
globalvar.set_radio_encours_global(false);
globalvar.setOnHold_global(false);
mTabsAdapter = new TabsAdapter(this, mViewPager);
bar = getSupportActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayShowTitleEnabled(false);
bar.setDisplayShowHomeEnabled(false);
mTabsAdapter.addTab(bar.newTab().setText("Tab1"),
Tab1.class, null);
mTabsAdapter.addTab(bar.newTab().setText("Tab2"), Tab2.class,
null);
mTabsAdapter.addTab(bar.newTab().setText("Tab3 "),
Tab3.class, null);
mTabsAdapter.addTab(bar.newTab().setText("Tab4"),
Tab4.class, null);
}
你的课没问题,它应该能用,我用的也一样,它能用...我认为保存viewpager的Activity/Fragment中存在问题,所以我建议检查onCreate/onCreateView方法。
如果找不到任何东西,请发布此方法的代码,如果命名方法不是导致错误的原因,则发布类的代码。
我有一个TabLayout或TabHost的设计,无论你想考虑什么。假设这是选项卡- Tab1 | Tab2 | Tab3 | Tab4 | Tab5 在此情况下,将执行以下操作- 表1-打开碎片1 表2-打开碎片2 Tab3-在现有片段上打开一个覆盖图,显示半透明的黑色视图 表4-打开碎片3 表5-打开碎片4 你知道怎么解决这个问题吗?提前感谢!! 更新:我使用的解决方案 我试过这个,但不得不进
我正在使用jetpack导航从片段过渡到细节片段。 我需要帮助在显示细节片段的片段上显示细节片段。 请看下面的照片,看看我正在努力实现什么: 我也在导航图中的动画上使用基本的fade_in/fade_out。 这是我得到的结果: 如何设置转换以使细节片段显示在呈现视图上? 这是我所有的进步: 底部导航菜单 导航图 主要活动。kt Tab1片段(这是带有埃菲尔铁塔图像的片段 赏金编辑: 我希望在导航
我开发了一个应用程序,其中有导航抽屉和抽屉内的许多片段,所以我在打开片段内的片段时遇到问题,在一个片段中,当用户单击列表视图项时,我有列表视图,他们获得了与列表项相关的数据,所以我面临的问题是,它仍然单击不可见的列表,但单击 片段布局 开放片段代码
设置文本指针异常,我得到错误。 } 我得到的错误; E/AndroidRuntime:致命异常:主进程:com.vortex.soruhafizam,PID:6341 java.lang.nullPointerException:尝试对位于com.vortex.soruhafizam.fragmentbirinci.onCreateView(Fragmentbirinci.java:32)的And
我的中有10个选项卡。打开活动后,第一个片段就会显示出来,但下一个片段中的方法(AsyncTask)会被调用。如果我转到下一个选项卡,比如第3个选项卡,那么将调用第4个中的方法,依此类推。 我不理解这种行为。请救命!
有人有教程来实现使用支持库v7(appcomat_v7)的片段中的CAB吗? 我不知道该怎么做,我找不到一个教程来解释一个片段中的实现和使用支持库。 谢谢你的阅读。