Questions tagged «android-fragments»

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

5
片段内的onCreateOptionsMenu
我已放置setHasOptionsMenu(true)在内部onCreateView,但仍无法调用onCreateOptionsMenu内部片段。 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { setHasOptionsMenu(true); return inflater.inflate(R.layout.facesheet, container, false); } 下面是我的onCreateOptionsMenu代码。 @Override public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { getSupportMenuInflater().inflate(R.menu.layout, menu); return (super.onCreateOptionsMenu(menu)); } 我收到的错误消息: 该方法onCreateOptionsMenu(Menu)类型片段的必须重写或实现的超类型方法。

3
使用ViewPager的Android.app片段与android.support.v4.app?
我对Android支持库,片段以及作为一个具体示例的ViewPager类有疑问。我的意图是创建一个功能与Android Developer网站(http://developer.android.com/training/animation/screen-slide.html或http://developer.android.com/ training / implementing-navigation / lateral.html)。在研究他们的代码时,我注意到他们利用了该android.support.v4.app库,根据我的研究,该库是访问ViewPager该类的唯一方法。 在我的情况下,我对向后兼容性没有兴趣。最低API级别是14(冰淇淋三明治),构建目标是4.2软糖。以最简单的形式,我的应用程序执行的功能与我在Android开发人员网站上链接的第二个演示程序完全相同-只需在三个包含内容的选项卡之间滑动即可。 我读过的所有文章/帖子/答案似乎都非常支持v4支持库。现在是我的问题,尽管问题long之以鼻: 构造应用程序的最佳方法是什么-使用android.support.v4.app,从而使用SupportFragments,或使用其中提供的Fragments- android.app为什么? 如果“碎片来源” android.app是解决之道,那么最佳的解决方法是ViewPagers什么? 如果SupportFragments最适合该任务,我估计它们具有与其他功能相同的功能-那么将它们完全包含在内部的目的是什么android.app? 希望有一个更清晰的了解的人可以给我一些澄清,因为我感到困惑。

13
如何在Fragment中使用数据绑定
我正在尝试遵循Google官方文档中的数据绑定示例 https://developer.android.com/tools/data-binding/guide.html中的 除了我试图将数据出价应用于片段,而不是活动。 我目前在编译时遇到的错误是 Error:(37, 27) No resource type specified (at 'text' with value '@{marsdata.martianSols}. onCreate 片段看起来像这样: @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); MartianDataBinding binding = MartianDataBinding.inflate(getActivity().getLayoutInflater()); binding.setMarsdata(this); } onCreateView 片段看起来像这样: @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.martian_data, container, false); …

18
如何使WRAP_CONTENT在RecyclerView上工作
我有一个DialogFragment包含RecyclerView(卡片列表)的。 其中RecyclerView一个或多个CardViews可以具有任意高度。 我想DialogFragment根据CardViews其中包含的高度给它正确的高度。 通常情况下,这将是简单的,我会成立wrap_content的RecyclerView这个样子。 <android.support.v7.widget.RecyclerView ... xmlns:tools="http://schemas.android.com/tools" android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:clickable="true" android:scrollbars="vertical" > </android.support.v7.widget.RecyclerView> 因为我使用的是RecyclerView这不起作用,请参见: https://issuetracker.google.com/issues/37001674 和 嵌套的回收站视图高度不包含其内容 在这两个页面上,人们都建议扩展LinearLayoutManager和覆盖onMeasure() 我首先使用了第一个链接中提供的LayoutManager: public static class WrappingLayoutManager extends LinearLayoutManager { public WrappingLayoutManager(Context context) { super(context); } private int[] mMeasuredDimension = new int[2]; @Override public void onMeasure(RecyclerView.Recycler recycler, RecyclerView.State state, int widthSpec, int heightSpec) …

12
使用片段时在Android导航抽屉图像和Up插入符之间切换
当使用导航抽屉时,Android开发人员建议在ActionBar中“仅导航抽屉中表示的那些屏幕实际上应该具有导航抽屉图像”,而“所有其他屏幕都具有传统的上克拉”。 有关详细信息,请参见此处:http: //youtu.be/F5COhlbpIbY 我正在使用一项活动来控制片段的多个级别,并且可以使Navigation Drawer图像在所有级别上显示和运行。 创建较低级别的片段时,我可以调用ActionBarDrawerToggle setDrawerIndicatorEnabled(false)来隐藏导航抽屉图像并显示Up插入符号 LowerLevelFragment lowFrag = new LowerLevelFragment(); //disable the toggle menu and show up carat theDrawerToggle.setDrawerIndicatorEnabled(false); getSupportFragmentManager().beginTransaction().replace(R.id.frag_layout, lowFrag, "lowerFrag").addToBackStack(null).commit(); 我遇到的问题是,当我导航回到Up克拉的顶层片段时,仍然显示而不是原始的Navigation Drawer图像。关于如何“刷新”顶层片段上的ActionBar以重新显示导航抽屉图像的任何建议? 解 汤姆的建议对我有用。这是我所做的: 主要活动 此活动控制应用程序中的所有片段。 在准备替换其他片段的新片段时,我setDrawerIndicatorEnabled(false)像这样设置DrawerToggle : LowerLevelFragment lowFrag = new LowerLevelFragment(); //disable the toggle menu and show up carat theDrawerToggle.setDrawerIndicatorEnabled(false); getSupportFragmentManager().beginTransaction().replace(R.id.frag_layout, lowFrag).addToBackStack(null).commit(); 接下来,在的替代中onBackPressed,我通过将DrawerToggle设置为如下来还原了上述内容setDrawerIndicatorEnabled(true): @Override …

13
在片段及其容器活动之间传递数据
如何在片段及其容器活动之间传递数据?是否有类似于通过意图在活动之间传递数据的东西? 我读了这篇文章,但并没有太大帮助:http : //developer.android.com/guide/topics/fundamentals/fragments.html#CommunicatingWithActivity


1
获取当前的片段对象
在我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(); 它FragmentType2,FragmentType3,...在不同的时间设置不同类型的Fragment对象()。现在在某个时间点,我需要确定当前存在哪个对象。 在短,我需要做这样的事情: Fragment currentFragment = //what is the way to get current fragment object in FrameLayout …

1
为什么要避免在片段中使用非默认构造函数?
我正在使用创建一个应用程序,Fragments其中一个创建了非默认构造函数,并收到以下警告: Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead 有人可以告诉我为什么这不是一个好主意吗? 您还能建议我如何做到这一点: public static class MenuFragment extends ListFragment { public ListView listView1; Categories category; //this is my "non-default" constructor public MenuFragment(Categories category){ this.category = category; }.... 是否不使用非默认构造函数?

26
如何设置DialogFragment的宽度和高度?
我在一个xml布局文件中指定DialogFragment的布局(我们称它为layout_mydialogfragment.xml),尤其是它的layout_width和layout_height属性(可以100dp这么说)。然后,我在DialogFragment的onCreateView(...)方法中将此布局充气,如下所示: View view = inflater.inflate(R.layout.layout_mydialogfragment, container, false); 不幸的是,我发现对话框(DialogFragment)出现时,它不遵守XML布局文件中指定的layout_width和layout_height(并且对话框根据内容的不同而收缩或扩展)。任何人都知道是否或者如何让我的对话框尊重其layout_width并layout_height在其xml布局文件中指定?目前,我必须在DialogFragment的onResume()方法中再次指定对话框的宽度和高度,如下所示... getDialog().getWindow().setLayout(width, height); ...因此,不合需要的是,必须记住在以后两个地方对对话框的宽度和高度进行任何更改。

5
FragmentPagerAdapter仅存在于Android.Support.V4.App(而非Android.App)中
我在Android.App中找不到FragmentPagerAdapter。 我不想使用Android.Support.V4.App的Fragment,因为我的目标API是14和更高版本(Android 4.0和更高版本)。因此,我只想使用简单的Android.App.Fragments以及相关的类。 我只在Android.Support.V4.App中找到了它,但这对我来说还是不够的。我想使用Android.App.Fragment的(不是Android.Support.V4.App.Fragment的) Android.App(不是Android.Support.V4.App)中的相关类,并且如果我从FragmentPagerAdapter派生我的寻呼机(如果它是从Support库派生的),我的代码将无法编译,因为在Android.App和Android.Support之间会导致类型不匹配.V4.App。 就像这里无法转换为android.app.Fragment的情况一样,是否应该使用“普通”传呼器(PagerAdapter)类代替FragmentPagerAdapter之类的东西(就像您是从常规Activity而非FragmentActivity派生的一样, (定位到API 11或更高版本时)。 这是我正在使用的示例代码(来自https://github.com/xamarin/monodroid-samples/tree/master/Support4上的MonoDroid示例的Support4.sln解决方案中的FragmentPagerSupport.cs文件)。 我已注释掉引用Android.Support.V4.App的行,并用引用Android.App的代码替换了它们。我找不到Android.Support.V4.App之外的FramePagerAdapter,但我确实需要它)。 谢谢。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; //using Android.Support.V4.App; //using Android.Support.V4.View; namespace Support4 { [Activity (Label = "@string/fragment_pager_support")] [IntentFilter (new[]{Intent.ActionMain}, Categories = new[]{ "mono.support4demo.sample" })] //public …

5
如何设置DialogFragment的标题?
这应该是一个简单的任务,但是由于某种原因,我可以找到一种设置DialogFragment标题的方法。(我使用onCreateView重载设置对话框的内容)。 默认样式为标题留了一个地方,但是我在DialogFragment类上找不到任何设置它的方法。 当使用该onCreateDialog方法设置内容时,标题以某种方式神奇地设置了,所以我想知道这是设计使然,还是使用onCreateView重载时设置它的特殊技巧。

30
错误夸大类片段
我得到错误 Unable to start activity ComponentInfo{de.androidbuch.activiti/de.androidbuch.activiti.task.Activity}: android.view.InflateException: Binary XML file line #11: Error inflating class fragment 当我通过人像和风景模式切换时。我正在使用片段。我的xml是: <LinearLayout android:id="@+id/mainLayout" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > <ListView android:id="@+id/android:list" android:layout_height="wrap_content" android:layout_width="fill_parent"/> <fragment android:id="@+id/fragmentDetails" android:layout_height="fill_parent" android:layout_width="fill_parent" class="de.androidbuch.activiti.task.TaskDetailsFragment"/> </LinearLayout> 如果我通过横向和纵向模式切换,则一切正常。但是当我单击我的片段(我可以看到我的片段)然后切换到其他模式时,我得到了错误。知道我该如何解决吗?在这里找到了一些答案,但是这些都没有帮助我... 06-21 14:55:05.600: ERROR/AndroidRuntime(7636): FATAL EXCEPTION: main 06-21 14:55:05.600: ERROR/AndroidRuntime(7636): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.androidbuch.activiti/de.androidbuch.activiti.task.Activity}: android.view.InflateException: …


13
添加到后台堆栈后如何保持片段状态?
我写了一个虚拟活动,可以在两个片段之间切换。当您从FragmentA转到FragmentB时,FragmentA被添加到后台堆栈中。但是,当我返回FragmentA(按回去)时,会创建一个全新的FragmentA,并且它所处的状态会丢失。我感觉自己对这个问题也很满意,但是我提供了完整的代码示例来帮助解决问题: public class FooActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(android.R.id.content, new FragmentA()); transaction.commit(); } public void nextFragment() { final FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(android.R.id.content, new FragmentB()); transaction.addToBackStack(null); transaction.commit(); } public static class FragmentA extends Fragment { @Override public View onCreateView(LayoutInflater …

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.