Questions tagged «android-fragments»

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

4
活动/片段暂停时如何处理处理程序消息
我的其他帖子略有变化 基本上我有一个消息Handler在我的Fragment接收一串可导致对话消息被解雇或示出。 当应用程序进入后台时,我得到一个提示,onPause但仍然如我所愿地通过我的消息。但是,因为我使用的是片段,所以我不能只关闭并显示对话框,因为这会导致IllegalStateException。 我不能只是解雇或取消允许状态丢失。 鉴于我有一个问题,Handler我想知道是否存在关于在暂停状态下如何处理消息的推荐方法。 我正在考虑的一种可能的解决方案是记录暂停时通过的消息并在上播放它们onResume。这有点不能令人满意,我认为框架中必须有一些东西可以更优雅地处理。

13
使用FragmentPagerAdapter的ViewPager中的片段在第二次查看时为空白
我有一个片段界面,其底部带有选项卡,可在主视图中打开不同的片段。 我有一个特定的片段,它是项目列表。如果用户选择此列表中的一个项目,则会打开另一个片段,其中包含一个viewpager,该viewpager会在上一个片段的列表中的所有项目之间水平滚动。这很好。 viewpager使用FragmentPagerAdapter来显示项目。 当用户在列表中选择一个项目,查看它,然后单击选项卡栏上的按钮以返回到列表,然后选择另一个项目时,就会出现问题。第二次选择项目时,出现空白屏幕,而不是viewpager。发生这种情况时,我在LogCat中没有收到任何错误。 为什么viewpager只第一次出现? FragmentPagerAdapter: public class ViewPagerAdapter extends FragmentPagerAdapter { Cursor mCursor; public ViewPagerAdapter(FragmentManager fm, Cursor c) { super(fm); mCursor = c; } public void changeCursor(Cursor c) { mCursor = c; this.notifyDataSetChanged(); } @Override public int getCount() { if (mCursor == null) return 0; else return mCursor.getCount(); } …

10
无法使自定义DialogFragment在Fragment上透明
我需要在一个片段上创建一个对话框(占用整个屏幕)。该对话框必须是一个浮动对话框,将其放置在片段上方,而片段在片段外部变暗。 对于自定义对话框,无论我做什么,我都有一个具有弯曲边缘的linearLayout,该对话框的所有侧面都带有黑色边框(非常小)。我已经尽一切努力使它透明并消失(以便所有对话框只是线性布局-弯曲框) 对于DialogFragment,这就是我对onCreateView的要求 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ LinearLayout layout =(LinearLayout)inflater.inflate(R.layout.custom_dialog, null); LinearLayout item = (LinearLayout)layout.findViewById(R.id.display_item); populateItemData(item, inflater); return layout; } custom_dialog只是将android:backgroung设置为#000000的LinearLayout 这是我自定义对话框的样式 <style name="CustomDialog" parent="android:style/Theme.Dialog"> <item name="android:windowBackground">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:alwaysDrawnWithCache">false</item> <item name="android:windowContentOverlay">@null</item> </style> 我尝试了这种风格的各种组合(从我在网上看到的内容),我无法摆脱那种讨厌的黑色边框,如果将LinearLayout背景设置为除其他以外的其他颜色,则可以将其绘制为白色或其他任何颜色#000000 ... 我实际上花了3-4个小时,希望其他人能帮忙...

10
在Android中显示隐藏片段
我正在开发包含2个片段的应用程序,我想根据需要显示hide。以下代码提供了我的问题的简单示例。这个简单的Fragmentactivity包含1个按钮和一个listfragment。 这个简单的例子完美无缺。但是我不满意秀皮的碎片。如果删除layout.setVisibility(View.GONE); 从代码然后ft.hide(f); 不会隐藏片段。实际上,我们并没有隐藏片段,我们正在隐藏容器。 我的问题是,这是显示皮革碎片的一种方法吗?如果不是,那么请通过测试示例进行解释,因为很多人都面临此问题,因此如何隐藏和显示片段。 public class MainActivity extends FragmentActivity implements OnClickListener { Fragment1 f; Button b; LinearLayout layout; Fragment myf; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b = (Button) findViewById(R.id.button1); layout = (LinearLayout) findViewById(R.id.ll); f = new Fragment1(); } @Override public void onClick(View v) { FragmentTransaction ft = …

17
如何使DialogFragment宽度变为Fill_Parent
我正在使用一个Android应用程序DialogFragment来显示对话框,但是它的宽度很小。我怎样才能做到这fill_parent一点呢? public class AddNoteDialogFragment extends DialogFragment { public AddNoteDialogFragment() { // Empty constructor required for DialogFragment } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { getDialog().setTitle(getString(R.string.app_name)); View view = inflater.inflate(R.layout.fragment_add_note_dialog, container); return view; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Dialog dialog = super.onCreateDialog(savedInstanceState); // request a window …

3
片段或活动中带有工具栏的协调器布局
有了新的设计库,有几个新的布局会极大地改变开发人员希望的工具栏行为。由于不同的片段具有不同的行为和目标,例如带有折叠的工具栏的画廊片段显示重要的照片,或者没有滚动视图的片段只需要appbarlayout来隐藏工具栏,因此在活动中只有一个工具栏可以证明是困难的。 因此,我应该将工具栏移动到每个片段吗?如果是这样,我每次显示一个片段时都必须设置supportActionBar,并且还要对该片段中的活动进行引用,这会使片段的独立性无效。如果我仅将工具栏留在“活动”中,则必须为每个片段中的每种行为类型定义多个布局。最好的方法是什么?

12
片段onResume从后堆栈
我正在使用兼容性包在Android 2.2上使用Fragments。使用片段并将片段之间的过渡添加到后台时,我想实现活动的onResume相同的行为,即,每当片段从弹出窗口中移到“前景”(用户可见)时,回栈,我想在片段中激活某种回调(例如,对共享UI资源执行某些更改)。 我看到片段框架中没有内置的回调。为了达到这个目的,有什么好的做法吗?

7
如何更新ActionBar中显示的菜单项?
我有一个包含2个片段的活动。两者都是ListFragments,都向菜单贡献MenuItems。我有一个MenuItem,它已将android:showAsAction属性设置为在ActionBar上显示为按钮。哪个工作正常。 现在MenuItem是依赖状态的。这是“暂停/恢复”菜单选项,用于暂停和恢复队列。我的问题是创建片段时我不知道如何设置它的初始雕像。 它的状态取决于队列是否暂停。所以我有一个AsyncTask来获取队列并根据队列的状态设置一个布尔值(已暂停)。我正在调用onPrepareOptionsMenu来基于队列的最后一个已知状态来设置“暂停”菜单项的文本,并且如果我将MenuItem保留在实际菜单中,则该方法非常有用。您单击菜单图标,将触发onPrepareOptionsMenu并在显示菜单之前对其进行更新。 问题是,如果将相同的MenuItem放在ActionBar(showAsAction)上,如何强制其更新而不必调用onPrepareOptionsMenu?我需要能够执行此操作,因为在首次启动该应用程序时,我发送了一个获取队列的请求,但是在设置并显示了ActionBar之后,任务会返回。我在片段中创建了一个处理程序,每次获取队列更新时都会调用该处理程序,但是从那里,如何更新ActionBar上MenuItem的文本?除了onPrepareOptionMenu中的内容外,我似乎找不到其他方法来操纵当前设置的Menu。 罗伯·W

9
显示DialogFragment,动画从一点开始
DialogFragment当用户在中点击某行时,我正在显示一个ListView。我想对对话框的显示进行动画处理,以使其从行的中央开始增长。从启动器打开文件夹时,可以看到类似的效果。 ,我已经有一个想法是组合TranslateAnimation和ScaleAnimation。还有另一种方法吗?

8
如何收听PreferenceFragment中的首选项更改?
如上所述这里,我继承PreferenceFragment并显示它的活动中。该文档仅在您将PreferenceActivity子类化的情况下说明了如何在此处侦听首选项更改。由于我没有这样做,我该如何收听偏好更改? 我尝试在我的PreferenceFragment中实现OnSharedPreferenceChangeListener,但它似乎不起作用(onSharedPreferenceChanged似乎从未被调用)。 到目前为止,这是我的代码: SettingsActivity.java public class SettingsActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Display the fragment as the main content. getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit(); } } SettingsFragment.java public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener { public static final String KEY_PREF_EXERCISES = "pref_number_of_exercises"; @Override public void onCreate(Bundle …

3
参数为null的addToBackStack是什么意思?
我有一个客户代码。所有片段只有一个活动,即单个活动正在管理所有片段。 此活动在该片段的方法末尾包含任何片段的以下代码, 例如-片段MoreFragment: MoreFragment firstFragment = new MoreFragment(); getSupportFragmentManager().beginTransaction() .replace(R.id.article_fragment, firstFragment) .addToBackStack(null).commit(); 所以, 1)addToBackStack(null)后面跟a 是什么意思commit()? 2)为什么需要将null参数传递给addToBackStack? 3)这样添加后如何获得该片段? 好像这段代码没有用,因为我在没有最后一行的情况下运行了代码.addToBackStack(null).commit(),并且没有任何问题。

14
将BottomSheetDialogFragment的状态设置为展开
如何使用Android支持设计库(v23.2.1)设置扩展BottomSheetDialogFragment为扩展的片段的状态BottomSheetBehavior#setState(STATE_EXPANDED)? https://code.google.com/p/android/issues/detail?id=202396说: 首先将底页设置为STATE_COLLAPSED。如果要扩展它,请调用BottomSheetBehavior#setState(STATE_EXPANDED)。请注意,您不能在视图布局之前调用该方法。 该建议的做法需要将第一膨胀的观点,但我不知道我怎么会设置BottomSheetBehaviour到片段(BottomSheetDialogFragment)。 View bottomSheet = coordinatorLayout.findViewById(R.id.bottom_sheet); BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet);

9
如何检查片段中的权限
我想检查片段中的权限。 我的代码: // Here, thisActivity is the current activity if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // Should we show an explanation? if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), android.Manifest.permission.ACCESS_FINE_LOCATION)) { // Show an explanation to the user *asynchronously* -- don't block // this thread waiting for the user's response! After the user // sees the …

10
有没有一种方法类似于开始片段的结果?
我目前在叠加中有一个片段。这是用于登录服务。在电话应用程序中,我要在叠加层中显示的每个步骤都是他们自己的屏幕和活动。登录过程分为3个部分,每个部分都有自己的活动,这些活动由startActivityForResult()调用。 现在,我想使用片段和叠加来做同样的事情。叠加层将显示与每个活动相对应的片段。问题在于这些片段托管在Honeycomb API的活动中。我可以使第一个片段正常工作,但随后需要startActivityForResult(),这是不可能的。是否有类似startFragmentForResult()的地方,在这里我可以开始一个新的片段,完成后将结果返回到先前的片段?

7
从片段开始活动
我有2个片段,两个片段上都有一个按钮。当我按下按钮时,我想开始一个新的活动。但是我无法正常工作。 我收到的错误:这里错误:类型不匹配:无法从mFragmentFavorite转换为Fragment 我究竟做错了什么? MyFragmentPagerAdapter import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; public class MyFragmentPagerAdapter extends FragmentPagerAdapter{ final int PAGE_COUNT = 3; /** Constructor of the class */ public MyFragmentPagerAdapter(FragmentManager fm) { super(fm); } /** This method will be invoked when a page is requested to create */ @Override public Fragment getItem(int …

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.