Articles of android fragments

片段中未调用onSaveInstanceState

我知道人们已经提出了这个问题,但我遵循了所有的答案,我仍然遇到同样的问题。 我有两个脚本一个是片段管理器(IngredientsActivity),另一个是片段(OtherList)。 代码如下 IngredientsActivity import java.util.ArrayList; import android.app.ActionBar; import android.app.FragmentTransaction; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.view.Gravity; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; public class IngredientsActivity extends FragmentActivity implements ActionBar.TabListener { private static final String STATE_SELECTED_NAVIGATION_ITEM = “selected_navigation_item”; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.check_list); // Set up the […]

如何使用片段替换ViewPager

我有以下布局 Everyting is workinf fine,但我想用Fragment替换ViewPager getSupportFragmentManager().beginTransaction() .replace(R.id.view_pager, new CustomFragment()) .commit(); 这不是诋毁ViewPager我该怎么办?

如何在android中创建多窗格布局

我想制作我使用多窗格布局的屏幕。在屏幕中,左侧显示自定义列表视图和右侧显示有关单击项目的详细信息。当我在该节目中运行app时,仅显示单个屏幕,例如列表。但是在屏幕上显示列表和详细页面的lanscape模式。请告诉我我能做什么或做什么。

如何在类和使用它的片段之间进行通信?

我正在使用Android Studio。 我无法在线find答案,所以即使是解决方案的链接也会有所帮助。 我有一个Activity ,其中包含许多片段。 其中一个片段称为BookGridFragment ,它使用一个名为BookGrid的类。 BookGridFragment看起来像这样(我遗漏了无关的位): public class BookGridFragment extends Fragment { BookGrid myBookGrid; public BookGridFragment() {} @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); // Inflate layout View rootView = inflater.inflate( R.layout.fragment_book_grid, container, false); myBookGrid = rootView.findViewById(book_grid); return rootView; } public void setBook(Book thisBook) { myBookGrid.setBook(thisBook); } […]

刷新片段不再工作

我今天失去了几个小时,因为我的function代码不再工作了。 更新到支持库25.1.0的新版本后,重新加载片段视图的代码不再起作用: 这是我的代码: FragmentManager manager = getActivity().getSupportFragmentManager(); FragmentTransaction fragmentTransaction = manager.beginTransaction(); fragmentTransaction.detach(fragment); fragmentTransaction.attach(fragment); fragmentTransaction.commit(); 我试图调试一些断点 public void onPause() public void onStop() public void onAttach(Context context) public void onDetach() public void onDestroyView() public void onDestroy() 但应用程序没有进入任何该function,屏幕上没有任何反应。 如果我单独调用detach,没有附加,则应用程序进入onPause和onStop并且视图离开屏幕。

应用程序在没有stackTrace的情况下崩溃

我的应用程序有一个非常奇怪的问题,它包含一个Activity和2个Fragments(android.support.v4.app.Fragment)。 问题是当我旋转平板电脑时:应用程序立即崩溃。 几天前,一切都工作正常,但我不得不更改包名称,这会产生一些错误,但我设法纠正它们。 问题出现在那之后,但我只是找不到错误在哪里。 这是我在应用程序被销毁,重新启动,恢复和创建后立即得到的Logcat: 10-08 17:00:14.930: D/dalvikvm(18155): GC_CONCURRENT freed 394K, 8% free 7792K/8455K, paused 1ms+4ms 10-08 17:00:14.930: D/AndroidRuntime(18155): Shutting down VM 10-08 17:00:14.930: W/dalvikvm(18155): threadid=1: thread exiting with uncaught exception (group=0x40bee1f8) 10-08 17:00:14.938: E/AndroidRuntime(18155): FATAL EXCEPTION: main 10-08 17:00:14.938: E/AndroidRuntime(18155): java.lang.IllegalStateException: No activity 10-08 17:00:14.938: E/AndroidRuntime(18155): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1070) 10-08 17:00:14.938: E/AndroidRuntime(18155): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1065) 10-08 […]

DailogFragment – getArguments / setArguments – 为什么在包中传递参数?

在官方示例http://developer.android.com/reference/android/app/DialogFragment.html#BasicDialog中 ,正在使用静态工厂方法创建片段,该方法在Bundle中包装参数并调用no-args构造函数传递args使用setArguments(bundle) – 所以我的问题是 – 为什么不简单地用这些参数创建公共构造函数? 使用getArguments / setArguments片段的方法的原因是什么 – 可能是Dialog不能保证每次都重新创建,但重用? 如果是的话那么什么时候发生? 提前致谢。

Android兼容包Fragment作为内部静态类

我一直在使用Android兼容包但我遇到了以下问题,似乎每当我在我的应用程序上创建一个Fragment作为内部静态类并尝试启动该活动时它会显示以下错误 android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment org.wr.CreditCardHolderActivity.CreditCardHolderFragment: make sure class name exists, is public, and has an empty constructor that is public 当我将片段和活动分开时,一切顺利进行,任何人都知道为什么? 我该如何解决? 谢谢!

AppCompat Fragment生命周期发生了变化

更新到新的appcompat库com.android.support:appcompat-v7:25.1.0我在替换事务中的片段时有了新的片段生命周期。 例如,我有两个片段FrFirst和FrSecond其中包含onStart和onStop日志,我先用第二个替换,然后用第一个替换第二个: FrFirst -> FrSecond -> FrFirst 。 getActivity().getSupportFragmentManager() .beginTransaction() .replace(R.id.content, new FrSecond()) .commit(); 在之前的appcompat版本中,我可以读取此日志: FrFirst:导航到第二个 FrFirst:停下来 FrSecond:开始 FrSecond:导航到第一个 FrSecond:停下来 FrFirst:开始 在25.1.0中这个日志: FrFirst:导航到第二个 FrSecond:开始 FrFirst:停下来 FrSecond:导航到第一个 FrFirst:开始 FrSecond:停下来 所以现在onStart展示之前onStart的片段然后onStop of current。 为什么方法顺序发生了变化,这是支持库中的错误吗?

OnStroy上的onDestroyView片段永远不会被调用

我的APP确实有多个片段和活动,这些活动大多数都包含不同的片段,这是为了让我的组件可以轻松重复使用。 当我将其他活动加载到活动堆栈时,我遇到了一个问题。 案件 推出了ActivityA – > ActivityB – > ActivityC 所有这些活动都包含不同的片段,但问题是当ActivityB从ActivityA启动时,虽然onStop被调用,但ActivityA onDestroyView的片段不会被调用。 当我继续向堆栈应用添加太多活动时,我的APP允许从一个到另一个的无限数量的导航逐渐抛出OOMexception。 在下面find我用来将片段添加到片段后栈的代码。 final android.support.v4.app.FragmentTransaction ft = fragmentManager.beginTransaction(); if(transaction.mInAnimation != FragmentTransaction.FRAGMENT_NO_ANIMATION && transaction.mOutAnimation != FragmentTransaction.FRAGMENT_NO_ANIMATION) { ft.setCustomAnimations(transaction.mInAnimation, transaction.mOutAnimation); } String tag; if(transaction.isRoot){ clearFragmentStack(); tag = “0”; }else { tag = fragmentManager.getBackStackEntryCount() + “”; } final AtomicFragment fragment = transaction.compile(); ft.replace(transaction.mFrameId, fragment, tag); ft.addToBackStack(tag); ft.commit();