Tag: android fragments

在片段中的onCreateView之前调用setUserVisibleHint

我在ViewPager工作,在ViewPager使用Fragment 在片段中的onCreateView()之前调用setUserVisibleHint() 我从支持库android.support.v4.app.Fragment使用Fragment 这是图书馆的问题吗? 我怎样才能摆脱它? 编辑 我重写setUserVisibleHint()而不是调用超级来摆脱它。 @Override public void setUserVisibleHint(boolean isVisibleToUser) { //FIXED: setUserVisibleHint() called before onCreateView() in Fragment causes NullPointerException //super.setUserVisibleHint(isVisibleToUser); }

Android onClick与OnClickListener

我意识到之前已经提出了一个类似措辞的问题,但这是不同的。 我在开发android应用程序方面很新颖,关于android:onclick="" XML属性和setOnClickListener方法之间的区别,我有三个问题。 两者有什么区别? 在编译时间或运行时间或两者之间find两个实现之间的差异? 哪些用例有利于哪些实现? Android中的片段使用在实现select上有什么不同?

从ViewPager更新片段

我有一个ViewPager Activity 。 我也有一个Dialog ,将检索用户将select的一些项目列表。 现在,我怎么能更新项目应该显示为附加到这个片段的新视图的片段? 这是我的ViewPager的适配器: public static class MyAdapter extends FragmentPagerAdapter { public MyAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return 1; } @Override public android.support.v4.app.Fragment getItem(int position) { switch (position) { case 0: return new Fragment1(); default: return null; } } } 现在,这里是Fragment : public class Fragment1 extends Fragment{ […]

Android 2.2.1,2.3,2.0中的碎片。 这可能吗?

基本上我想知道如果我们可以在Android操作系统<3.0的设备中有片段布局。 我的应用程序顶部有5个不同的button,开始总是第一个button被默认点击,所以这些button下方的视图是第一个视图。 现在当你点击它旁边的第二个button时,我不希望标题图像被刷新,但它下面的视图需要刷新。 所以它像更新标题图像button下面的片段。 所以我们可以在OS <3.0的设备上安装Android的片段。 萨纳。

Android 4.0,4.1(<4.2)中嵌套片段的最佳实践,而不使用支持库

我正在写一个4.0和4.1平板电脑的应用程序, 我不想使用支持库 (如果不需要),但只有4.x的API。 所以我的目标平台定义为:> = 4.0和<= 4.1 该应用程序有一个多窗格布局(两个片段,一个小的左边,一个内容片段在右边)和一个带有选项卡的操作栏。 与此类似: 单击操作栏上的一个选项卡将更改“外部”片段,然后内部片段是具有两个嵌套片段(1.小左列表片段,2.宽内容片段)的片段。 我现在想知道什么是最好的做法,以取代片段,特别是嵌套片段。 ViewPager是支持库的一部分,这个类没有原生的4.x替代品。 似乎在我的意义上被“弃用”。 – http://developer.android.com/reference/android/support/v4/view/ViewPager.html 然后,我阅读了Android 4.2的发行说明,关于ChildFragmentManager ,这很适合,但我的目标是4.0和4.1,所以这也不能使用。 ChildFragmentManager仅在4.2中可用 http://developer.android.com/about/versions/android-4.2.html#NestedFragments http://developer.android.com/reference/android/app/Fragment.html#getChildFragmentManager() 不幸的是,即使在整个Android开发人员指南中,几乎没有任何好的示例显示了没有支持库的片段使用的最佳实践; 特别是关于嵌套的片段。 所以我想知道:是不是可以使用嵌套的片段来编写4.1应用程序,而不使用支持库及其附带的所有东西? (需要使用FragmentActivity而不是Fragment等?)或者最好的做法是什么? 我目前在开发中遇到的问题正是这种说法: http://developer.android.com/about/versions/android-4.2.html#NestedFragments Android支持库现在也支持嵌套片段,因此您可以在Android 1.6或更高版本上实现嵌套片段devise。 注意:当布局包含<fragment>时,不能将布局充气到<fragment> 。 只有在dynamic添加到片段时才支持嵌套片段。 因为我把定义在XML中的嵌套片段,这显然会导致像这样的错误: Caused by: java.lang.IllegalArgumentException: Binary XML file line #15: Duplicate id 0x7f090009, tag frgCustomerList, or parent id 0x7f090008 with another fragment for de.xyz.is.android.fragment.CustomerListFragment_ […]

Android:你可以嵌套片段?

是否可以在另一个Fragment的布局中粘贴Fragment ? 有没有人试过这个?

获取当前片段对象

在我的main.xml有 <FrameLayout android:id="@+id/frameTitle" android:padding="5dp" android:layout_height="wrap_content" android:layout_width="fill_parent" android:background="@drawable/title_bg"> <fragment android:name="com.fragment.TitleFragment" android:id="@+id/fragmentTag" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </FrameLayout> 我正在设置这样的片段对象 FragmentManager fragmentManager = activity.getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); Fragment newFragment = new FragmentType1(); fragmentTransaction.replace(R.id.frameTitle, casinodetailFragment, "fragmentTag"); // fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); 它在不同的时间设置不同types的片段对象( FragmentType2,FragmentType3,… )。 现在在某个时间点,我需要确定当前有哪个对象。 总之我需要做这样的事情: Fragment currentFragment = //what is the way to get current fragment object in FrameLayout R.id.frameTitle 我尝试了以下 […]

傻瓜式的方式来处理方向变化的片段

public class MainActivity extends Activity implements MainMenuFragment.OnMainMenuItemSelectedListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager .beginTransaction(); // add menu fragment MainMenuFragment myFragment = new MainMenuFragment(); fragmentTransaction.add(R.id.menu_fragment, myFragment); //add content DetailPart1 content1= new DetailPart1 (); fragmentTransaction.add(R.id.content_fragment, content1); fragmentTransaction.commit(); } public void onMainMenuSelected(String tag) { //next menu is […]

这是正确的方式来清理碎片回堆叠时,留下一个深度嵌套?

我正在使用Android兼容性库来实现片段,并扩展了布局示例,以便片段包含一个可以closures另一个片段的button。 在左侧的select窗格中,我有5个可选项目 – ABCDE 。 每个在细节窗格中加载一个片段(通过FragmentTransaction:replace ) – abcde 现在我已经扩展了片段e以包含一个button,在另一个片段e1也加载了一个button。 我已经完成了片段e的onClick方法,如下所示: FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); ft.replace(R.id.details_frag, newFrag); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); ft.addToBackStack(null); ft.commit(); 如果我做出以下select: E – e – e1 – D – E 然后片段e在详细信息窗格中。 这很好,我想要的。 但是,如果我点击backbutton,它什么都不做。 我必须点击两次,因为e1仍然在堆栈中。 此外,点击后,我在onCreateView中得到一个空指针exception: 为了“解决”这个问题,我selectABCDE时添加了以下内容: FragmentManager fm = getActivity().getSupportFragmentManager(); for(int i = 0; i < fm.getBackStackEntryCount(); ++i) { fm.popBackStack(); } 只是想知道这是否是正确的解决scheme,或者我应该做一些不同的事情?

碎片MyFragment不附加到活动

我创build了一个小型testing应用程序,代表我的问题。 我使用ActionBarSherlock来实现(Sherlock)片段的选项卡。 我的代码: TestActivity.java public class TestActivity extends SherlockFragmentActivity { private ActionBar actionBar; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setupTabs(savedInstanceState); } private void setupTabs(Bundle savedInstanceState) { actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); addTab1(); addTab2(); } private void addTab1() { Tab tab1 = actionBar.newTab(); tab1.setTag("1"); String tabText = "1"; tab1.setText(tabText); tab1.setTabListener(new TabListener<MyFragment>(TestActivity.this, "1", MyFragment.class)); actionBar.addTab(tab1); } private […]