标签: fragment-tab-host

IllegalStateException:片段已添加到tabhost片段中

FATAL EXCEPTION: main
Process: com.example.loan, PID: 24169
java.lang.IllegalStateException: Fragment already added: FormFragment{428f10c8 #1 id=0x7f050055 form}
    at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1192)
    at android.support.v4.app.BackStackRecord.popFromBackStack(BackStackRecord.java:722)
    at android.support.v4.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1533)
    at android.support.v4.app.FragmentManagerImpl$2.run(FragmentManager.java:489)
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1484)
    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:450)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5068)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
    at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

所以,我有一个使用tabhost构建的Android应用程序.共有三个选项卡,在tab2中,有一个按钮用于在tab2中进行片段事务(在片段活动中调用该函数)

FragmentTransaction t = getSupportFragmentManager().beginTransaction();
        t.replace(R.id.realtabcontent, mFrag);
        t.addToBackStack(null);
        t.commit();
Run Code Online (Sandbox Code Playgroud)

如果我像这样运行有例外:

  1. 在tab2内,我按下按钮更改片段
  2. 转到其他选项卡(例如,选项卡1或选项卡3)
  3. 按后退按钮
  4. 抛出异常

如何解决?谢谢你的帮助

tabs android android-lifecycle android-fragments fragment-tab-host

62
推荐指数
5
解决办法
7万
查看次数

动态更改片段标签主机中的片段?

我有一个主要的活动,这里是片段活动我在B片段中设置两个片段A和B两个片段当用户点击按钮时我有一个按钮我想将片段B更改为片段C.但是上面的标签是可见的......

如何在标签内实现替换片段?

非常感谢任何解决方案.

android android-tabhost android-fragments fragment-tab-host android-nested-fragment

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

是否可以在片段中手动调用onCreateView?

是否可以onCreateView在a中手动调用方法Fragment,如果没有,是否可以通过某种方式模拟此调用?

我有一个FragmentActivitytabHost.每个选项卡都包含一个Fragment,我想Fragment在按下"刷新"按钮时刷新视图.更具体地说,我想重新调用该onCreateView方法.

我的代码目前看起来像:

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

    layoutExsternal = (RelativeLayout) view.findViewById(R.id.layoutExsternal);
    layoutHall = (RelativeLayout) view.findViewById(R.id.layoutHall);

    init();

    return view;
 }

  [...]

@Override
public boolean onOptionsItemSelected(MenuItem item) {
      // TODO Auto-generated method stub
     Log.d("itemSelected1", this.getClass().getSimpleName());

     switch (item.getItemId()) {
        case R.id.menu_refresh:

            //HERE I want to insert a method for refresh o redraw

     return true;
     } …
Run Code Online (Sandbox Code Playgroud)

android fragment android-view fragment-tab-host

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

在Android 2.2 + ViewPager和Fragments中实现TabHost使用的教程

像我这样的人的简短教程,他们在找到实现TabHost和ViewPager的方法时遇到了一些麻烦,包括用手指翻页和选项卡点击来更改页面.显示的解决方案与Android 2.2版本兼容.

它包括选项卡初始化,与选项卡连接的ViewPager和页面滚动管理.

它的主要特点是优化早期版本的Android(FROYO,API版本8,Android 2.2)以及用于不同目的的简单实现.

我希望它会有用.

android swipe android-2.2-froyo android-viewpager fragment-tab-host

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

FragmentTabHost没有在android中的Fragment中创建视图

我在使用tabhost更改视图时遇到问题 - 当我选择一个选项卡时,内容保持空白.

据我所知,onCreateView没有被称为儿童碎片.onMenuCreate运行正常,因为菜单改变了它应该.

   public class PatientTabFragment extends Fragment {
    private FragmentTabHost mTabHost;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        mTabHost = new FragmentTabHost(getActivity());
        mTabHost.setup(getActivity(), getChildFragmentManager());

        mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Info"),
                NewPatientFragment.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Notes"),
                NoteListFragment.class, null);


        return mTabHost;
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        mTabHost = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

android android-tabhost android-fragments fragment-tab-host android-nested-fragment

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

如何创建包含片段的Android选项卡式对话框?

任何人都可以给我一个例子,或者告诉我如何Tabbed Dialog在Android中创建一个简单的每个标签的内容Fragments?我发现的所有示例/教程都是关于片段和标签,但没有具体的内容DialogFragments.

该文档FragmentTabHost显示了如何使用正常片段创建选项卡getChildFragmentManager().我假设当片段是a DialogFragment时它也应该工作但是当我尝试它时我得到:

java.lang.IllegalStateException: Fragment does not have a view at android.support.v4.app.Fragment$1.findViewById(Fragment.java:1425)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:901)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
...
Run Code Online (Sandbox Code Playgroud)

这是我设置视图的代码(然后传递给AlertDialog.setView()):

private void setupView(View v) {
    mTabHost = (FragmentTabHost) v.findViewById(android.R.id.tabhost);

   mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent);

   mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("Tab1"),
            MyDialogFragment.class, null);
}
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-dialogfragment fragment-tab-host android-nested-fragment

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

Fragmenttabhost性能很慢?

我使用v4 support libFragmentTabHost

要求是当我将标签切换到另一个和另一个标签时,即调用

每次onCreateView()和onActivityCreated().

这就是我的代码性能很慢的原因.

那么,还有其他解决方案吗 如何提高片段选项卡的性能?

android fragment fragment-tab-host

9
推荐指数
2
解决办法
2858
查看次数

FragmentManager上的IllegalStateException

我的应用程序会在许多Android平台(4.1,4.0.4,2.3.6 ......)上报告此问题.但我无法在手机上重现此问题.我已经通过Google搜索了这个问题,但堆栈跟踪似乎与我的不一样.

有人知道问题是怎么回事吗?以及如何预防呢?或者我该如何重现此错误?谢谢.

堆栈跟踪:

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1327)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1338)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)
at android.support.v4.app.FragmentTabHost.onAttachedToWindow(FragmentTabHost.java:278)
at android.view.View.dispatchAttachedToWindow(View.java:12064)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2707)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2714)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2714)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2714)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2714)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1339)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1131)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4611)
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)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4898)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

--------------------编辑--------------------

致乔纳森:

我有两个片段.并且只有一个片段会覆盖onPause回调,代码如下所示.我之后不会覆盖其他回调onPause.我覆盖的另一个回调是onResume回调,代码也如下所示.

分段:

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

android fragment illegalstateexception fragment-tab-host

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

在TabWidget中更改文本颜色和选择器

我有一个TabWidget,独立于ÀctionBarFragmentTatHost` , in a.

我想自定义它的外观和感觉,TabWidget但我不明白.我的目的是更改文本颜色和选择器颜色,如图所示,我可以更改背景TabWidget.我不想TextView为标签使用自定义,因为标签必须具有Holo外观.

TabWidget

我试图给TabWidget它一个风格,但它不起作用.通过这种方式:

<TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            style="@style/MyTabs"
            />
Run Code Online (Sandbox Code Playgroud)

和风格

<style name="MyTabs">
        <item name="android:textColor">@color/white</item>
        <item name="android:background">@drawable/tabs</item>
        <item name="android:backgroundStacked">@color/red_action_bar</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

我试过用theme.xml添加样式parent="android:Widget.Holo.TabWidget",但没有任何反应.

customization android tabwidget fragment-tab-host

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

带有小部件片段的选项卡式对话框

我正在处理小部件,我在寻找小部件设置,我希望提供一个带有标签片段的对话框,问题是对话框没有操作栏标签,我尝试了各种布局模式,但它们似乎都没有工作.

  1. 在清单中,已经做了活动

    <activity android:theme="@android:style/Theme.Dialog"  android:launchMode="singleInstance"
              android:name="WidgetConfigureActivity"></activity>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我不确定,在UI中使用哪种布局正好使用ViewPager,FragmentTabHost,基本上不清楚要采用哪种布局.

  3. WidgetConfigureActivity FragmentActivity现在扩展,下面是它的代码(代码取自FragmentTabHost)

    FragmentTabHost mTabHost;
    @Override
    protected void onCreate(Bundle arg0) {
        super.onCreate(arg0);
        setContentView(R.layout.widget_configure_activity);
        mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
        mTabHost.setup(this, getSupportFragmentManager(), R.id.tabhost);
        //this above setup line gives error => (The method setup(Context, FragmentManager, int) in the type FragmentTabHost is not applicable for the arguments (WidgetConfigureActivity, FragmentManager, int))
        mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"),
                MyFragment.class, null);
    }
    
    Run Code Online (Sandbox Code Playgroud)

ViewPager并不重要,但如何使用带有片段的标签对话框是个问题?

4.即使应用于Theme.Dialog我的活动,如何使UI /布局不改变,所有字体在白色背景中显示为白色?(我通过倾斜屏幕看到了文字)

android android-widget android-layout android-fragments fragment-tab-host

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