Articles of android fragments

片段中的overridePendingTransition

我的主要活动使用带有viewpager和FragmentStatePagerAdapter的tablayout。 我想用我的一个片段打开一个带有自定义animation的新活动,然后再用animation关闭它。 当我打开它时,我唯一看到的是黑屏。 我是这样做的: public class SearchActivity extends Fragment{ … Intent myIntent = new Intent(getContext(), DetailsActivity.class); startActivityForResult(myIntent, ACTIVITY_RESULT); getActivity().overridePendingTransition(R.anim.animation_enter, R.anim.animation_leave); … } public class DetailsActivity extends AppCompatActivity{ … Intent returnIntent = new Intent(); returnIntent.putExtra(“result”, updatesPerformed); setResult(Activity.RESULT_OK, returnIntent); finish(); overridePendingTransition(R.anim.animation_leave, R.anim.animation_enter); … } 我试图在不同的地方移动方法,但animation仍然不起作用,我只看到黑屏。 如果我暂停并恢复到相同的活动,我会看到它。

处理绘图/绘画/保存多个位图

目标: 我想从pdf中绘制/写/绘制位图并将它们保存在一起,这样我就可以发送电子邮件了。 细节: 我有多个Pdf文件,每个文件包含5-20页,现在正在从pdfs提取位图并在ViewPager它们加载到片段中,我可以在其中滑动它们并写入/绘制或我想要的任何内容。 要保存/恢复我正在使用onSaveInstanceState的位图的当前状态。 这样我就可以在来回滑动的同时检索位图的最后一个阶段。 像这样的东西: @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putParcelable(“Bitmap”, bitmap); } 问题: 用户按下发送电子邮件按钮,我应该可以保存所有图像,无论他在哪个页面,即他已经编辑了页面5到10,现在他在第10页,按下发送按钮我应该能够检索所有编辑过的图像。 问题2: 正如我所说,图像的数量大约是5-20,在onSaveInstanceState保存状态效果很好,但是它在ram中不断增加应用程序内存,应用程序在应用程序大小达到150Mbs第10个图像处崩溃。 但是,将图像保存为onSaveInstanceState包也是必要的,因为当用户向前滑动时,它有助于更​​快地加载图像。 所以我想我们有什么办法可以创建一个自定义的bundle类,我们可以在滚动5页之后将图像写入磁盘并清除内存并在用户向后滚动时将其从磁盘读回内存? 这听起来有道理吗? 我试过的: 由于位图是以单独的片段加载的,我试图将位图保存到OnDestroy外部存储器,但由于将位图保存到磁盘不是一项小任务,但是使用AsyncTask需要时间,但是当用户在片段之间快速滑动然后保存位图时在OnDestroy中似乎不是一个方便的方式。 这就是为什么我问这个问题所以也许你对这种情况有了更好的了解,并且可以帮助我以更方便的方式实现这个目标。 那么你的目的是如何处理这种情况呢? 注意: 如果您无法理解情况并需要更多信息,请给我留言,我会更新问题。 谢谢

子片段自动销毁

我有一个父片段,即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 […]

使用CoordinatorLayout滚动Genymotion + Targeting Tablet布局问题

所以,我正在开发一个具有特定细节片段的层次结构的应用程序: CoordinatorLayout AppBarLayout CollapsingToolbarLayout Toolbar NestedScrollView 这是设置: CollapsingToolbarLayout有scrollFlags =“scroll | exitUntilCollapsed” 工具栏有layout_collapseMode =“pin” NestedScrollView有layout_behavior =“@ string / appbar_scrolling_view_behavior” 因此,当用户滚动NestedScrollView时,ToolbarLayout将缩小直到完全折叠,但工具栏只会收缩到它发送到的最小高度,因为它在折叠时设置为pin。 我相信这是一个相当常见的UI / UX模式。 它只是一个简单的Master-Detail格式。 话虽这么说,在手机上我的应用程序应该显示主片段,然后与细节片段进行交互。 在平板电脑/平板电脑上,主要和细节片段将并排显示,使得细节片段在主片段中的用户交互时改变。 这是通过在我创建的layout-sw600dp文件夹中具有不同的结构化布局来完成的。 问题 该设置在物理手机上运行良好,但是当我在平板电脑/手机的Genymotion模拟器上测试应用程序时出现问题。 使用layout-sw600dp文件夹我可以并排显示两个片段,但滚动行为不再按预期运行。 详细信息片段的NestedScrollView将滚动,但CollapsingToolbarLayout不再缩小,同样工具栏也不会缩小并固定到位。 整个CollapsingToolbarLayout只是固定到位,NestedScrollView不会滚动显示整个底部内容。 有人可以解释为什么我会看到这种行为吗? API级别不应该是问题,所以我迷路了。 我在运行Android 5.1的物理手机上测试了两个窗格设置,并且滚动行为与预期一样正常工作(但内容也按预期进行了非常压缩!) 另一个问题是,当我在Genymotion手机模拟器上运行它时,它会显示两个并排放置片段的窗格,即使它不应该…… 4.1+模拟器的手机宽度/高度至少是768 x 1280所以使用layout-sw600dp资源.. 这已经过测试:Android 4.4 / 5.1平板电脑尺寸为2560×1600,Android 4.4 / 5.1手机都在Genymotion模拟器上

在不同Activity中的片段之间共享ViewModel

我有一个名为SharedViewModel的ViewModel: public class SharedViewModel extends ViewModel { private final MutableLiveData selected = new MutableLiveData(); public void select(T item) { selected.setValue(item); } public LiveData getSelected() { return selected; } } 我基于Google的Arch ViewModel参考页面上的SharedViewModel示例实现它: https://developer.android.com/topic/libraries/architecture/viewmodel.html#sharing_data_between_fragments 活动中的两个或更多个片段需要彼此通信是很常见的。 这绝不是微不足道的,因为两个片段都需要定义一些接口描述,并且所有者活动必须将两者绑定在一起。 而且,两个片段必须处理尚未创建或不可见的其他片段的情况。 我有两个片段,名为ListFragment和DetailFragment 。 到目前为止,我在一个名为MasterActivity内部使用了这两个片段。 一切都运作良好。 我在ListFragment获得了ViewModel,选择了在ListFragment上使用它的值。 mStepSelectorViewModel = ViewModelProviders.of(getActivity()).get(SharedViewModel.class); 但是,现在我需要在某些情况下将ListFragment (布局到不同的设备配置)添加到名为DetailActivity的不同活动中。 有没有办法像上面的例子那样做?

在Marshmallow设备中加载地图时获取android.view.InflateException

我试图在我的片段Activity中加载map并获取XML膨胀错误。 崩溃只发生在Marshmallow(使用Micromax AQ4501 – Android 6.0)。 谷歌搜索我发现相同的情况请看这里 我尝试了同样的问题,插入SD卡解决了问题。 但我需要一个正确的方法来解决这个问题。 这可能是非常罕见的情况,我无法在所有设备中进行SD可用性检查。请指导我解决此问题。 快乐的编码!

在android中使用Sms Manager发送短信时RESULT_ERROR_GENERIC_FAILURE返回

我正在使用短信管理器向多个用户发送短信但我得到RESULT_ERROR_GENERIC_FAILURE(通用失败)。如何解决此问题? // —sends an SMS message to another device— private void sendSMS(String phoneNumber, String message) { String SENT = “SMS_SENT”; String DELIVERED = “SMS_DELIVERED”; PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent( SENT), 0); PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED), 0); // —when the SMS has been sent— registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context […]

在片段之间滑动左/右animation

我在这里发帖提问,因为我无法find问题的解决方案。 我读了很多关于androidanimation的东西。 我实际上开发了一个Android 4.0应用程序,我需要animation片段之间的过渡动​​画(不是布局)。 类似的post,使用布局但没有关于片段的更精确 这是我不完整的代码: 活动代码 private void showFragment(final Fragment fragment) { if (null == fragment) return; FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right); ft.replace(R.id.fragment_container_layout, fragment, fragment.getClass().getSimpleName()).commit(); } R.anim.slide_in_left 最后是R.anim.slide_out_right 当我运行此代码时,我得到一个例外: 12-27 15:26:55.566:E / AndroidRuntime(27699):java.lang.RuntimeException:未知的animation名称:translate 你有什么想法解决这个问题吗?

如何在兼容性库下的ListFragment中更改ProgressBar样式?

ListFragment默认情况下进度条很大 ProgressBar progress = new ProgressBar(context, null, android.R.attr.progressBarStyleLarge); 是使用reflection改变它的唯一方法吗?

有些人可以绘制Fragment及其父级FragmentActivity的生命周期吗?

在Android文档中,我单独find了有关Activity生命周期和Fragment生命周期的规范,但从未在一起。 当我将调试器附加到托管我的片段的FragmentActivity ,它似乎并不明显,而且生命周期不仅仅是疯狂的。 看起来活动首先完成然后片段开始,这是不可能的。 Fragment的生命周期 活动的生命周期 从逻辑上讲,片段应该在其onResume之后“跳入”活动的生命周期,并且它将在活动的onPause之前结束,但似乎它没有发生。 有人可以向我展示与其父级活动相关的片段的生命周期,还是指导我一些关于此的好教程?