Articles of android fragments

我怎么能用setRetainInstance(true)破坏碎片并将它们添加到backstack?

setRetainInstance上的文档说: 这只能用于不在后栈中的片段。 所以我开始玩它。 我有一个Activity添加第一个frag A FragmentManager fm = getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.content, new PackageFragment()); ft.commit 然后从这个frag我运行一个父Activity的方法,它将frag B添加到backstack FragmentManager fm = getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.content, new OrderFragment()); ft.addToBackStack(null); ft.commit(); 然后我从onCreate,onDestroy,onSaveInstanceState,onActivityCreated ……等创建log msg 我尝试了这个过程的两个版本。 在每个片段上旋转设备。 默认 一切都如预期。 onCreate,onDestroy on fragment fire setRetainInstance(真) 一切都如预期的那样? onCreate,onDestroy片段不要开火 当片段都在后台时,一切似乎都有效..所以为什么文档说我不应该使用它? 我可能遇到麻烦的情况是什么? 谢谢

在Android中将一个片段滑过另一个片段

在android中,我们可以将片段滑过另一个吗? 例如,在下图中: 有两个片段。 一个是红色,另一个是蓝色。 如果用户将手指按在黑色箭头上并将其向右拖动,则红色片段也随之拖动,从而覆盖蓝色片段。 最后,红色片段覆盖整个蓝色片段。 此外,如果用户在将红色片段拖动到不到一半的蓝色片段之前抬起他的手指,则红色片段应该回到其原始位置(因此不覆盖蓝色片段)。 然而,如果用户不抬起他的手指(即拖动箭头)直到红色片段覆盖蓝色片段的一半以上或整个蓝色片段,则红色片段应覆盖整个蓝色片段。 此外,如果红色片段(如, Buttons , EditTexts等)上有任何视图,那么它们也将相应地重新resize。 有没有办法做到这一点? 如果是,那怎么样?

Android导航栏涵盖了viewpager内容

我无法阻止系统导航栏覆盖我的内容! 我滚动到recyclerview的最底部,但它隐藏在导航栏后面。 这是我的XML布局。 这是您在图片中看到的片段布局。 我已经尝试将android:fitsSystemWindows =“true”添加到我可以进行的每一个布局中但是没有用。 其他线程提到从条形图计算的添加保证金,但这似乎不是正确的解决方案。 我直接从Google的CheesSquare应用程序演示了appbarlayout这个布局,看起来它的工作正常。

Android如何在标签更改时停止刷新片段

我有以下代码: MainActivity.java package com.erc.library; import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import android.app.ActionBar; import android.app.ActionBar.Tab; import android.app.FragmentTransaction; import android.content.SharedPreferences; import android.content.res.Resources; import android.graphics.Color; import android.os.Bundle; import android.os.Environment; import android.os.StrictMode; import android.support.v4.app.FragmentActivity; import android.support.v4.view.ViewPager; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.TextView; import android.widget.Toast; import com.erc.sayeghlibrary.adapter.TabsPagerAdapter; public class MainActivity extends FragmentActivity […]

使用工具栏+ TabLayout充气AppBarLayout

我目前在main.xml中有一个DrawerLayout。 有一个工具栏包装在AppBarLayout中,然后是一个简单的LinearLayout来交换片段。 我导航到的一个片段,我希望它包含一个ViewLager片段的TabLayout。 目前,我在片段的布局文件中都有这两个,但这会导致工具栏和TabLayout之间出现阴影,这是我不想要的。 我也不想使用setElevation(),因为它不适用于pre-Lollipop设备。 一个可能的解决方案是从我的片段中膨胀AppBarLayout,以便它同时包含工具栏+标签。 但是,我不确定如何做到这一点,所以任何帮助将不胜感激。 这是我的main.xml文件: 这是我的片段的xml文件:

在viewpager中有3个android片段,如何让它们全部活着?

我有一个至少包含3个片段的viewpager。 如果用户将数据输入A,然后输入B,则输入C并返回A,数据从A中丢失。 我想我在某处看到这与内存管理有关,因为片段只连接或存储相邻的片段,当我离得太远时,它会杀死A. 但是我希望保留每个片段的生命,即使我有> 3。 除非明确指示,否则如何告诉viewpager永远不会杀死片段?

你会如何在Android中创建一个popover视图,比如Facebook评论?

我想知道是否有人知道如何在Facebook Android应用程序中创建类似Facebook的popup视图以供评论。 这就是我的意思: 除了可以拖动以解除它的句柄,它是一个原生的Android UI控件还是Facebook自己实现了这个?

从活动中设置片段的参数

我想将活动中的parameter passing给嵌入到活动中的片段。 片段静态嵌入xml布局中。 我试着像这样调用setArgument(): setContentView(R.layout.detail_activity); DetailFragment detailFragment = (DetailFragment) getFragmentManager().findFragmentById(R.id.detailFragment); detailFragment.setArguments(getIntent().getExtras()); 但是已经太晚了,因为必须在片段创建后立即调用setArguments。 唯一的是我看到getArguments()和更改捆绑。 有更好的方法吗?

片段内的findViewById

有没有办法在片段范围内通过id查找视图? 我正在使用一系列片段来呈现专门的列表。 片段从布局加载,因此它们的小部件都具有相同的ID。 我想我可以find一种方法,在创建期间(或之后)为每个小部件提供自定义ID。 但是,如果我能以某种方式将findViewById限制在片段的范围内,那将会更好。

已经调用了Android FragmentTransaction提交

我的错误: java.lang.IllegalStateException:已经调用了commit 我的代码: final FragmentTransaction fragmentTransaction =getFragmentManager().beginTransaction(); f1_fragment = new F1_Fragments(); f2_fragment = new F2_Fragments(); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { parent.getItemAtPosition(position); if(position==0){ fragmentTransaction.replace(android.R.id.content, f1_fragment); }else{ fragmentTransaction.replace(android.R.id.content, f2_fragment); } fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); } });