Articles of android fragments

片段标签的使用

在Android中,您可以在FragmentTransaction中为Fragment设置标记。 为什么我需要为片段设置标签? 如果Fragment根据其标记更改其行为,这是一种好习惯吗?

fragmentTransaction.add和fragmentTransaction.replace之间的区别

我所知道的是: 在fragmentTransaction.replace() ,将调用当前片段的onStop()函数,而fragmentTransaction.add()则不会。 并在调用fragMgr.popBackStack(); ,我们将返回前一个片段,无论使用fragmentTransaction.replace还是fragmentTransaction.add() 那么fragmentTransaction.replace做了什么? 我可以理解我们可以“添加”一个片段opon一个前一个片段然后通过popBackStack()返回到前一个片段,但是: 如果先前的片段被当前片段“替换” ,我想先前的片段被删除并且当前片段被添加进来,当popBackStack()调用时,它如何返回到先前的片段?

如何从View中获取Fragment?

我在TableLayout添加了一些Fragment ,我想从容器Activity管理它们,所以我使用了这个: Fragment fragment = (Fragment) tableLayout.getChildAt(i); 但getChildAt(int)返回一个View而View无法转换为Fragment

从BackStack中保留ViewPager中的Fragment时重新加载WebView

这是包含WebView的基本Fragment的代码。 WebFragment.java public class WebFragment extends Fragment { String TAG = “WebFragment”; private WebView webView; private String currentUrl = “http://www.google.com”; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.webview_layout, null); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); webView = (WebView) getView().findViewById(R.id.helloWebview); initWebView(); webView.loadUrl(currentUrl); } @SuppressLint(“SetJavaScriptEnabled”) private void initWebView() { webView.getSettings().setJavaScriptEnabled(true); webView.addJavascriptInterface(new […]

getSupportFragmentManager()。findFragmentById()返回null

我试图在Android中实现片段通信,如android指南中的那个http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity 但我的应用程序崩溃,因为getSupportFragmentManager()。findFragmentById()返回null。 我的实施有什么问题。 代码如下: 该程序只是通过第一个fragmnet上的按钮单击将输入文本从一个片段发送到另一个片段textView区域。我有一个activity_main.xml和两个片段布局(两个单独的xml文件而不是activity_main.xml中的一部分) Frag1.java public class Frag1 extends Fragment { public Frag1(){ } buttonClickListener buttonListener; @Override public void onAttach(Activity activity) { super.onAttach(activity); try { buttonListener = (buttonClickListener) getActivity(); } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + ” must implement OnButtonPressListener”); } } View myFragmentView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle […]

popBackStack()和replace()操作有何不同?

在管理Fragments时,我在应用程序中遇到了一些奇怪的行为,我想知道是否可以帮助解释为什么会发生这种情况。 我有两个片段,我们将它们称为片段A和片段B.我的应用程序的一般流程是当用户以某种方式与片段A交互时,片段B通过调用fragmentTransaction.replace() (这发生在所有情况)。 当我显示片段B时,我将片段A添加到后栈; 然后,当用户按下片段B上的后退按钮时,片段A将通过从后面的堆栈popup再次显示。 这一切都很好,但今天我发现有一个来自Fragment B的流调用fragmentTransaction.replace() ,用当前在后栈上的Fragment A的相同实例替换Fragment B. 本身并没有什么不妥,但是当我从片段A返回到片段B时会出现奇怪的行为。如果我调用了fragmentTransaction.replace() ,则不会调用片段B的onCreate()方法。 但是,如果我从后堆栈中popupFragment A然后用Fragment B替换它,则会触发Fragment B的onCreate()方法。 为什么是这样? 请注意,片段A和片段B的所有实例都是在其主机Activity启动时创建的。 编辑以澄清。 第二次调用onCreate()的情况如下:附加片段A =>用片段B替换,将片段A添加到后栈=> pop片段A使用popBackStack() =>将片段A再次替换为片段B 。

如何在滚动视图中设置谷歌地图片段

我想在垂直ScrollView设置一个Google地图片段,当我做地图不垂直缩放时,如何通过ScrollView的监听器覆盖MapView上的触摸事件监听器? 这是我的xml代码: ///other things //other things

在父节点的onStop之前调用新Activity的onStart

我有一个申请。 我使用startActivity()来启动活动。 任何人都可以告诉我为什么系统首先调用new Activity的onStart()而不是父类onStop() ? 这是否可能(没有系统错误)? 我发现在onStart()之后直接调用Fragment onStop() – 为什么? 回答,但我与Fragments没有任何共同点,并且使用了android-support库。 我被困了,因为我正在使用RoboSpice,它必须在onStart和onStop中包含正确的同步方法。 我不能,因为系统以错误的顺序调用它。 我在此应用程序中也使用GCM和Analytics库。

在startActivityForResult返回后,不会重新创建Android parentActivity

我有一个MainActivity,在里面,我正在加载片段A.从FragmentA,我使用startActivityforResult调用google placepicker活动,如下所示。 PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder(); Intent intent = builder.build(getActivity()); getActivity().startActivityForResult(intent,PLACE_PICKER_REQUEST); 但是当我选择地点时,onActivityResult(在FragmentA或MainActivity中)不会被调用。 事实上,我的应用程序在startActivityForResult调用后被破坏了。 根据我的理解,android应该重新创建调用活动,如果它在内存中不可用。但它没有发生。甚至没有在MainActivity中调用onCreate。 谁能告诉我这种行为背后的原因还是我错过了什么? 现在我尝试在同一个应用程序中使用另一个活动,而不是PlacePicker活动。 假设我已经加载了FragmentA MainActivity 。我使用FragmentA startActivityForResult调用SubActivity 。现在从SubActivity返回时,应用程序退出。 我已启用Dont keep activities在我的设备中Dont keep activities来测试此特定方案。 当我转向SubActivity时,我可以看到MainActivity被破坏。但是从SubActivity返回时,android没有重新创建MainActivity (即使onCreate没有被调用。应用程序刚退出)。

滚动选项卡中的片段时隐藏/显示工具栏

我在我的Android应用程序中添加了新的Toolbar , Tablayout和Viewpager 。 我为我的3个标签提供了碎片,并且工作正常。 但问题是,当我向上滚动我的工具栏时,不会隐藏。 我希望当我滚动我的片段时它应该隐藏。 还有一件事,我在片段中使用Webview。 我的代码如下。 MainActivity.Java public class MainActivity extends AppCompatActivity { TabLayout tabLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setupToolbar(); setupTablayout(); } private void setupToolbar() { // TODO Auto-generated method stub Toolbar toolbar = (Toolbar) findViewById(R.id.toolbarsdfs); if (toolbar != null) { setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true);} } private void setupTablayout() { […]