Articles of android nested fragment

viewpager中的片段,找不到视图错误

我有一个活动持有一个片段,在这个片段中有一个按钮,当它被点击时,会popup一个对话框。 在此对话框中,有一个Viewpager,它包含一些要显示的片段。 以下是代码和错误,请花费宝贵的时间向我展示我的错误。 非常感谢你的帮助。 MainActivity.class import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FragmentManager fm = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fm.beginTransaction(); MyFragment fragment = new MyFragment(); fragmentTransaction.add(R.id.container, fragment); fragmentTransaction.commit(); } } MyFragment.class import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import […]

如何在actionBar android中显示Fragment中的DialogFragment

我使用Tabs ActionBar和Fragments。 在一个片段里面我有按钮。 我想在按下按钮时显示DialogFragment (在我的片段中)。 我怎样才能做到这一点? 这是我的代码 public class MainActivity extends FragmentActivity implements EditNameDialogListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //showEditDialog(); ActionBar actionbar = getActionBar(); // Tell the ActionBar we want to use Tabs. actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // initiating both tabs and set text to it. ActionBar.Tab InboxTab = actionbar.newTab().setText(“One”); ActionBar.Tab SentTab = actionbar.newTab().setText(“Two”); […]

ActionBarSherlock与ViewPager在从backstack转发和返回时不调用ViewPager片段生命周期方法

我有一个使用ActionBarSherlock的应用程序,在主片段中我有一个ViewPager,它使用几个片段来显示列表的不同对象。 主要片段: public class CollectionDemoFragment extends SherlockFragment { DemoCollectionPagerAdapter mDemoCollectionPagerAdapter; ViewPager mViewPager; public CollectionDemoFragment() { setTitle(R.string.title); setHasOptionsMenu(true); } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.demo_fragment, container, false); mDemoCollectionPagerAdapter = new DemoCollectionPagerAdapter(getFragmentManager()); mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mDemoCollectionPagerAdapter); return view; } @Override public […]

子片段自动销毁

我有一个父片段,即FragmentA并在其上膨胀子片段FragmentB 。 在FragmentB onCreateView函数中试图膨胀另一个片段`FragmentC’。 FragmentA.java public class FragmentA extends Fragment { private static final String TAG = “FragmentA”; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { /* Inflate the layout for this fragment */ View view = inflater.inflate(R.layout.root_fragment, container, false); FragmentManager manager = getChildFragmentManager(); FragmentTransaction transaction = manager .beginTransaction(); /* * When this […]

getChildFragmentManager在4.0.3设备上引发NoSuchMethodexception,但在4.2.2上没引发exception

我需要为我的应用程序使用嵌套片段,所以我想使用getChildFragmentManager 。 我有两个设备: 一个真正的4.0.3运行 在4.2.2上运行的虚拟虚拟机 它在第二个上工作得很好,但在我的物理设备上却没有,因为调用此方法会引发NoSuchMethodexception。 07-10 19:53:51.722: E/AndroidRuntime(29711): java.lang.NoSuchMethodError: fr.epitech.test_esi.fragments.ReservationCalendarFragment.getChildFragmentManager 我的项目使用引用的库,所以我下载了最新的android支持库(来自SDK管理器),我已将它添加到库和主项目中。 另外我决定将支持的最小sdk版本设置为4.0.3(我的真实设备运行的版本): 对于主项目和图书馆。 如果有人知道我能做错什么,请告诉我。

如何将dependency injection嵌套的android片段?

对于普通(非嵌套片段),我使用以下方法 1)创建依赖关系(…)方法来设置片段的依赖关系 class MyFragment extends MyFragment { void dependencies(Deps deps); } 2)在MyFragment parent的活动onAttachFragment()方法中,我只提供片段的依赖关系 class MyActivity{ void onAttachFragment(Fragment f){ ((MyFragment)f).dependencies(deps); } } 对于嵌套片段,不再有onAttachFragment片段被调用。 为片段提供依赖性只是为了提供嵌套片段的依赖性,这似乎非常麻烦。 那我怎么能为它提供依赖呢?

替换的ViewPager和BackStack的生命周期?

我真的搞砸了Android ViewPager的生命周期,我开始认为我的应用程序结构有问题。 如果我能做以下事情,我想要确认: 我有一个应用程序显示一些选项卡。 其中一个选项卡显示的是ViewPager,其中有两个ListFragments。 这些ListFragments是在ViewPager的onCreate事件中创建的。 当您单击其中一个ListFragments中的项目时,它将用不同的片段(另一个是ListFrament)替换整个ViewPagerFragment。 这是我用来用新的ListFragment替换ViewPager的代码 FragmentManager fm = getFragmentManager(); android.support.v4.app.FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.container, new RequestForm(requestsList.get(itemIndex))); ft.addToBackStack(null); ft.commit(); 从那里,一切都很好。 但是,如果用户单击后退按钮,则会出现以下情况: ViewPager正在重新加载(来自onCreateView),但里面的ListFragment不会显示。 看起来我的ListFragment的对象仍然存在,但似乎他们丢失了他们的视图,并且没有调用onCreateView来重新创建它(因为在ViewPager出局时对象没有睡觉)。 我现在不在这里发布更多代码,因为我的目的是知道我想要做的是不是以Android的思维方式做好。 我是否必须与Android SDK进行对抗以存档我想要做的事情?

ViewPager,getChildFragmentManager()和getFragmentManager()

我正在开发一个Android应用程序,每个选项卡中都有TabHost和FragmentActivity 。 在我的第一个选项卡中,我使用ViewPager指示器和一个按钮初始化一个片段,此按钮打开一个带有另一个ViewPager指示器的对话框,但我的问题是片段根活动中的ViewPager与ViewPager的对话框发生冲突。 在root活动中我正在调用getChildFragmentManager() …并且可以,但是在ViewPager对话框中我再次调用getChildFragmentManager但是没有工作… 我究竟做错了什么?

无法保存和恢复嵌套片段?

我有一个嵌套的片段,我试图在给定方向改变的情况下恢复状态。 首先,我的设置如下: Activity -> ParentFragment (SetRetainInstance(true)) -> ChildFragment 在My Child片段中,我有onSaveInstance代码,如下所示: @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); // Serialize the current dropdown position. outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActivity().getActionBar() .getSelectedNavigationIndex()); } 但是,当我在所有LifeCycle事件中定向设备时,返回savedInstance状态为null。 我是否为ChildFragment做错了? 为什么我的州没有得到保存和归还?

ViewPager的碎片消失了

我正在使用带有ViewPagerIndicator ,但是最后一个不能与DrawerLayout 。 一旦我打开应用程序,viewpager就会正确显示但是一旦我在DrawerLayout中更改了片段,ViewPager的片段就会消失。 这是我的FragmentManager: FragmentManager fragmentManager = getSupportFragmentManager(); switch (arg2) { case 0: contentFragment = new Lebanon(); break; } fragmentManager.beginTransaction() .replace(R.id.content_frame, contentFragment).commit(); ViewPager中的第二个片段和第四个片段在那里它们并没有消失,而第一个,第三个和第五个片段消失了。 我的代码有什么问题? 这是我的碎片: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { viewta = inflater.inflate(R.layout.simple_tabs, container, false); SamsungLB = com.androidarabia.lebanon.SamsungLB.newInstance(); HTCLB = com.androidarabia.lebanon.HTCLB.newInstance(); LGLB = com.androidarabia.lebanon.LGLB.newInstance(); SonyLB = com.androidarabia.lebanon.SonyLB.newInstance(); SearchLB = […]