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)
如果我像这样运行有例外:
如何解决?谢谢你的帮助
tabs android android-lifecycle android-fragments fragment-tab-host
我有一个主要的活动,这里是片段活动我在B片段中设置两个片段A和B两个片段当用户点击按钮时我有一个按钮我想将片段B更改为片段C.但是上面的标签是可见的......
如何在标签内实现替换片段?
非常感谢任何解决方案.
android android-tabhost android-fragments fragment-tab-host android-nested-fragment
是否可以onCreateView
在a中手动调用方法Fragment
,如果没有,是否可以通过某种方式模拟此调用?
我有一个FragmentActivity
tabHost.每个选项卡都包含一个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) 像我这样的人的简短教程,他们在找到实现TabHost和ViewPager的方法时遇到了一些麻烦,包括用手指翻页和选项卡点击来更改页面.显示的解决方案与Android 2.2版本兼容.
它包括选项卡初始化,与选项卡连接的ViewPager和页面滚动管理.
它的主要特点是优化早期版本的Android(FROYO,API版本8,Android 2.2)以及用于不同目的的简单实现.
我希望它会有用.
android swipe android-2.2-froyo android-viewpager fragment-tab-host
我在使用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
任何人都可以给我一个例子,或者告诉我如何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
我使用v4 support lib
的FragmentTabHost
要求是当我将标签切换到另一个和另一个标签时,即调用
每次onCreateView()和onActivityCreated().
这就是我的代码性能很慢的原因.
那么,还有其他解决方案吗 如何提高片段选项卡的性能?
我的应用程序会在许多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) 我有一个TabWidget
,独立于ÀctionBarFragmentTatHost` , in a
.
我想自定义它的外观和感觉,TabWidget
但我不明白.我的目的是更改文本颜色和选择器颜色,如图所示,我可以更改背景TabWidget
.我不想TextView
为标签使用自定义,因为标签必须具有Holo外观.
我试图给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"
,但没有任何反应.
我正在处理小部件,我在寻找小部件设置,我希望提供一个带有标签片段的对话框,问题是对话框没有操作栏标签,我尝试了各种布局模式,但它们似乎都没有工作.
在清单中,已经做了活动
<activity android:theme="@android:style/Theme.Dialog" android:launchMode="singleInstance"
android:name="WidgetConfigureActivity"></activity>
Run Code Online (Sandbox Code Playgroud)我不确定,在UI中使用哪种布局正好使用ViewPager,FragmentTabHost,基本上不清楚要采用哪种布局.
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