Questions tagged «android-fragments»

片段代表Android应用程序中可重用的行为或部分用户界面。

4
如何从片段弹出片段
我有一个活动A,该活动称为片段Bf,该活动称为片段Cf。我希望在调用Cf时将Bf放在后台,以便用户可以导航回去。但是,如果在Cf中按下了特定的按钮,我希望将Bf从后堆栈中删除。这可能吗? 我看到有一个popBackStack()函数。但是,我对如何工作感到有些困惑。使用此功能安全吗?是否有可能将不同应用程序的活动插入Bf之后的Backstack中? 此外,是否有任何方法可以在后堆栈上更改片段的savedInstanceState? 我只是不知道如何使用模拟器在后堆栈上进行可靠的测试。

11
使用片段回栈处理ActionBar标题?
我Activity在中加载了一个位置ListFragment,然后单击它会向下钻取一个级别,并显示一种新类型的ListFragment,替换了原来的级别(使用showFragment下面的方法)。这被放置在后面的堆栈上。 开始时,活动在操作栏中显示默认标题(即,它是根据应用程序的自动设置的android:label)。 在显示层次结构中下一级的列表时,单击的项目名称应成为操作栏的标题。 但是,按时Back,我希望恢复原始的默认标题。这是FragmentTransaction一无所知,因此标题不会恢复。 我已经模糊地阅读了有关FragmentBreadCrumbs,但这似乎需要使用自定义视图。我正在使用ActionBarSherlock,并且希望没有自己的自定义标题视图。 最好的方法是什么?是否有可能没有大量样板代码并且不必跟踪沿途显示的标题? protected void showFragment(Fragment f) { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.fragment_container, f); ft.addToBackStack(null); ft.commit(); }

4
如何通过旋转正确保留DialogFragment?
我有一个承载DialogFragment的FragmentActivity。 DialogFragment执行网络请求并处理Facebook身份验证,因此我需要在轮换期间保留它。 我已经阅读了与此问题有关的所有其他问题,但没有一个问题真正解决了这个问题。 我正在使用putFragment和getFragment保存Fragment实例,并在活动重新创建期间再次获取它。 但是,在onRestoreInstanceState中对getFragment的调用中,我总是遇到空指针异常。我还想防止对话框在旋转期间被关闭,但是到目前为止,我什至不能保留它的实例。 任何想法出什么事了吗? 这是我的代码当前的样子: public class OKLoginActivity extends FragmentActivity implements OKLoginDialogListener { private OKLoginFragment loginDialog; private static final String TAG_LOGINFRAGMENT = "OKLoginFragment"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FragmentManager fm = getSupportFragmentManager(); if(savedInstanceState == null) { loginDialog = new OKLoginFragment(); loginDialog.show(fm, TAG_LOGINFRAGMENT); } } @Override public …

2
Android片段onCreateView与onActivityCreated
我知道片段的视图层次结构必须在onCreateView中进行夸大,但是onCreateView中可以有哪些其他功能,而onActivityCreated应该等待什么呢?我当前的实现对所有内容使用单独的活动,一个典型的活动在其onCreate方法中完成其大部分工作,包括扩大视图,设置内容视图,使用数据初始化各种小部件,设置侦听器等。 那么,是否可以将所有这些都移到onCreateView中,还是应该将某些函数放入onActivityCreated方法中?


8
在刷新期间使用SwipeRefreshLayout切换片段时,片段会冻结,但实际上仍然可以工作
更新:我认为它工作正常。但是经过一些测试后,问题仍然存在*嗅* 然后,我制作了一个简单的版本,以查看确切发生了什么,并且我知道应该分离的令人耳目一新的片段仍然留在那里。或者恰好是旧片段的视图留在新片段之上。由于我原始应用程序的RecyclerView的背景不是透明的,因此事实证明了我之前所说的。 更新结束 我有这样的MainActivity布局: <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- As the main content view, the view below consumes the entire space available using match_parent in both dimensions. --> <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- android:layout_gravity="start" tells DrawerLayout to treat this as a sliding drawer on the left side …

9
FragmentTransaction动画在顶部滑动
我正在尝试使用FragmentTransaction.setCustomAnimations实现以下效果。 片段A正在显示 用片段B替换片段A。片段A在替换期间应保持可见。片段B应该从右侧滑入。片段B应滑入片段A的顶部。 在动画设置中获取幻灯片没有问题。我的问题是,我无法弄清楚如何使片段A停留在原处并在动画幻灯片运行时位于片段B之下。不管我做什么,片段A似乎都在上面。 我该如何实现? 这是FragmentTransaction代码: FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.setCustomAnimations(R.anim.slide_in_right, R.anim.nothing, R.anim.nothing, R.anim.slide_out_right); ft.replace(R.id.fragment_content, fragment, name); ft.addToBackStack(name); ft.commit(); 如您所见,我为“ out”动画定义了一个动画R.anim.nothing,因为我实际上不希望Fragment A做任何事情,而不仅仅是在事务处理期间停留在原处。 以下是动画资源: slide_in_right.xml <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="@android:integer/config_mediumAnimTime" android:fromXDelta="100%p" android:toXDelta="0" android:zAdjustment="top" /> 没有.xml <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="@android:integer/config_mediumAnimTime" android:fromAlpha="1.0" android:toAlpha="1.0" android:zAdjustment="bottom" />

11
在返回按钮上的片段中,活动为空
我有一个活动,并且很多片段都膨胀了 FrameLayout <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> 示例:mainActivity>任何片段(按返回按​​钮)>活动为空白。 在onCreate中: layout = (FrameLayout)findViewById(R.id.content_frame); layout.setVisibility(View.GONE); 当我开始片段时: FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.content_frame, profileFragment); ft.addToBackStack(null); ft.commit(); layout.setVisibility(View.VISIBLE); 我想我需要GONE再次按一下frameLayout的可见性,但是我该怎么做呢? 我尝试onBackPressed并设置,layout.setVisibility(View.GONE);但是无法直接浏览片段,因为我直接进入主页。

5
ScrollView布局不能填满整个屏幕
我得到一个Activity带有2Fragment的(一个列出一个正常值)。并且法线Fragment对Scrollview包含一个LineaLayout(垂直)进行膨胀,并且此布局包含TextViews。在ScrollView和layout_width和layout_height的match_parent,所以我觉得应该用整个屏幕。但是在底部仍然有一个“差距”。我希望你能帮助我。 ScrollView.xml <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/scrollView1" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/titlescreen_bg" android:orientation="vertical" android:paddingTop="60dp" tools:context=".MainActivity" > <TextView android:id="@+id/tv_headline" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:paddingBottom="60dp" android:paddingTop="60dp" android:textIsSelectable="false" android:textSize="@dimen/fontsize_slogan_titlescreen" /> <TextView android:id="@+id/tv_content" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:paddingBottom="30dp" android:paddingTop="30dp" android:textIsSelectable="false" android:textSize="@dimen/fontsize_slogan_titlescreen" /> </LinearLayout> </ScrollView> 片段扩大了这种布局。 package wak.iage.layout; import wak.iage.R; import android.app.Fragment; import android.graphics.Color; import android.graphics.Typeface; …

4
当片段被替换并放回堆栈(或取出)时,它是否保留在内存中?
行为是否类似于“活动”的工作方式?例如,使用活动,它的工作方式如下: 活性的启动活动B,而乙是在屏幕上,该系统能够以除去甲从存储器如果它是由系统所需的。按BACK后,将重新创建A到内存中,就好像它从未放在第一位一样。 我一直在寻找对Fragments在内存方面会发生什么的清晰解释,但没有发现任何东西。是否以相同的方式工作?例如: 活动C在其布局中具有片段F。然后,在某个点F被Fragment G替换,但是F保留在其后堆栈中。 威尔˚F留在内存中,直到ç被杀害或者可以在由系统根据需要被删除? 我真正要问的是,如果我在一个Activity中有复杂的片段后退堆栈,是否会出现内存不足的风险?

10
两个片段之间的基本通信
我有一项活动- MainActivity。在此活动中,我有两个片段,都是在xml中声明性创建的。 我试图String将用户输入的文本传递到Fragment A中的文本视图中Fragment B。然而,事实证明这非常困难。有谁知道我将如何实现这一目标? 我知道一个片段可以使用引用其活动getActivity()。所以我猜我会从那里开始吗?

6
在fragmentpageradapter中重用碎片
我有一个viewpager,可以通过片段进行分页。我的FragmentPagerAdapter子类在该getItem方法中创建了一个看起来很浪费的新片段。是否有一个FragmentPagerAdapter相当于convertView在listAdapter,使我重新使用已创建的片段?我的代码如下。 public class ProfilePagerAdapter extends FragmentPagerAdapter { ArrayList<Profile> mProfiles = new ArrayList<Profile>(); public ProfilePagerAdapter(FragmentManager fm) { super(fm); } /** * Adding a new profile object created a new page in the pager this adapter is set to. * @param profile */ public void addProfile(Profile profile){ mProfiles.add(profile); } @Override public int …

5
分割还是不分割-针对活动的嵌套片段。为什么要使用多个活动?
关于是否应使用Activities还是使用了很多讨论Fragments。例如: 片段化或非片段化 一个活动和所有其他片段 多少活动与片段 在Android应用程序中使用活动或片段 我发现的大多数讨论都是在Android 4.2之前发布的。 Google借助Android 4.2发明了嵌套片段。 因此,我实际上再也看不到任何理由使用多个 Activity。 在初期,Fragments它们应该在Apps中用于支持Tablets和舒适地同时智能手机。 因此,例如,您有一个ListView可以打开View有关单击项目的详细信息。在智能手机上,我们将替换ListView并显示详细信息View。而平板电脑,而不是与详细信息视图替换列表可以同时显示Views在同一时间。 现在有了嵌套,Fragments还有许多其他可能性。如果您要使用单个Activity,可以将常规信息存储在Activity,每个Fragment人都可以访问它。 除此之外,Fragments谁筑巢Fragments人还可以为他们的孩子存储信息Fragments。 有了Fragments我可以轻松地重用的方式Views,我可以同时显示多个内容,并且可以轻松地Fragment从一个对话框中形成一个对话框。Fragment。这一切可能只需要我执行一些复制和粘贴操作。 如果我Activities改用了,我必须认真地进行很多更改以完成此操作。 我最近实现了一个应用程序,在其中我可以轻松地使用两个应用程序Fragment-ViewPager使事情变得真正美丽和动态(某种形式:今天的信息-昨天的信息)。我认为Fragments让我们的生活更轻松:) 问题: 为什么要使用多个Activity? 您能否提供一个很好的示例,在其中使用多次Activities而不是使用更有意义Fragments? 有什么好的例子,您别无选择,只能使用Activities吗? 我认为大多数较大的框架(如Maps,YouTube和co)都已支持Fragments。因此,我们不必依赖Activities。也就是它很容易对付NavigationBar,TabHosts,ViewPager,ActionBar如果你使用Fragments。 从Udacity: 为什么不总是创建一个带有很多片段的活动? 复杂性增加 更难的意图处理 难以阅读,维护和测试 紧密耦合的风险 安全问题



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.