Articles of android fragments

片段分离方法不会停止相机预览

我有这个布局: 在我的活动中我得到了这个: FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); if(savedInstanceState != null){ System.out.println(“savedInstanceState is NOT null”); return; } CleanPreviewFragment cleanPreviewFragment = new CleanPreviewFragment(); processedPreviewFragment = new ProcessedPreviewFragment(); fragmentTransaction.add(R.id.clean_preview_fragment_container,cleanPreviewFragment); fragmentTransaction.detach(cleanPreviewFragment); fragmentTransaction.replace(R.id.clean_preview_fragment_container, processedPreviewFragment); fragmentTransaction.attach(cleanPreviewFragment); fragmentTransaction.commit(); 现在这样做,它开始一个相机预览(在干净的预览片段上),分离它并用另一个预览替换它,这是我修改过的预览,然后再次附加它(干净的预览片段)。 Detach():从UI中分离给定的片段。 这与将其放在后台堆栈时的状态相同:片段从UI中删除,但其状态仍由片段管理器主动管理。 所以我拆开它,但相机预览仍然继续? 因为当替换发生时,我可以看到修改后的预览。 这是由attach()方法引起的吗?

从滑动菜单进行Android导航 – 片段还是活动?

我正在将使用仪表板模式的Android应用程序升级到滑动菜单,并使用jfeinstein的库 。 最初我有一个DashboardActivity,它有6个按钮,每个按钮都会启动相应的Activity。 我还有大约30项其他活动可以从那些“顶级”活动开始。 现在,我有两种可能的方法: 定义某种MenuActivity,其中包括SlidingMenu片段,以及所选菜单项的启动活动,如旧版本中所示。 仅定义一个活动并将现有活动转换为片段,并在内容框架中显示它们。 在查看滑动菜单库的示例时,我认为它可能是最好的方法,因为它使用了切换片段,但我仍然认为一个Activity对于屏幕比片段更好。 是否有任何理由将单个活动和片段用于内容?

活动和片段生命周期,onResume是否一个接一个地开火?

我想知道当用户从Home Screen返回Activity时正确的顺序是什么。 Activity’s onResume()先执行,然后Fragment’s onResume()执行吗? 它是按顺序执行还是同时执行? 我在Fragment的onResume()中添加了一些代码,但它似乎没有在Activity的onResume()之后触发。

找不到id … for fragment PlaceholderFragment的视图

我有一个简单的应用程序(基于Android First App示例 ); 它唯一能做的就是显示一个EditText和一个按钮。 该按钮创建另一个活动,并显示EditText消息……简单! …但是当在模拟器上运行时,当我点击按钮时应用程序关闭,我收到此错误: “对于片段PlaceholderFragment {4173ead8#0 id = 0x7f05003c},找不到id 0x7f05003c(com.example.testapp:id / container)的视图” MainActivity.java public class MainActivity extends ActionBarActivity { public final static String EXTRA_MESSAGE = “com.example.testapp.MESSAGE”; public void SendMessage (View view) { Intent intent = new Intent(this, DisplayMessageActivity.class); EditText editText = (EditText) findViewById(R.id.edt_message); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message); startActivity(intent); } @Override […]

如何防止片段多次添加?

将UI元素(例如按钮)轻触时,将片段添加到布局中是很常见的。 如果用户非常快速地多次点击按钮,则可能会多次添加片段,从而导致各种问题。 如何防止这种情况?

在ViewPager中,在滑动到第3个选项卡时,tab1中的子片段消失

我在FragmentStatePagerAdapter中有3个选项卡。 我有一个标签1的片段,它动态地在相对布局中为其’linearlayout’容器添加视图。 我在tab 1片段中动态添加一些视图。 我还在该linearLayout容器中添加了一个完整的片段,其中包含其他视图。 这很好..每件事都很好。 但是当我去第3页然后回来。 所有观点都在那里。 但那个完整的片段消失了~~ 编辑 它从tab1消失,并出现在tab2中的视图下方,其中添加了另一个子片段。 首先,我在tab1和tab2中有一个listFragment。 基于listItem单击我在每个选项卡中加载一个片段,tab1和2中的两个片段在xml下面膨胀相同并添加动态视图,但在某些情况下,我在xml中给出的线性布局中添加一个完整的片段而不是视图。 当我必须在选项卡1和tab2中的两个新添加的片段中添加两个片段之后,只有列表,并滑动到tab3时出现问题。 回来了。 ‘tab1主片段’中的片段消失并出现在’tab2主片段’中的片段下方 这是viewpager,我通过方法setItem(片段,位置)更改不同的片段: public static class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { public static ArrayList tabs_fragments = new ArrayList( 3); public ScreenSlidePagerAdapter(FragmentManager fm, ArrayList tabs) { super(fm); ScreenSlidePagerAdapter.tabs_fragments = tabs; } @Override public Fragment getItem(int arg0) { return tabs_fragments.get(arg0); } @Override public int […]

重新创建()活动时,碎片不会被破坏

我有一个支持库片段,它发送网络调用,并在收到特定网络响应时recreate()父活动。 我可以看到活动确实被重新创建,因为我可以看到onCreate()和onDestroy()被调用。 但是在重新创建活动之后,片段仍然存在,并且它被卡在一个循环中,这个循环不断重新创建并创建新片段。 这是活动的onCreate()的一部分: if (someLogic()) { fragmentA = new FragmentA(); FragmentUtil.addFragment(getSupportFragmentManager(), fragmentA); } else { fragmentB = new FragmentB(); FragmentUtil.addFragment(getSupportFragmentManager(), fragmentB); } FragmentA是进行网络调用的那个,FragmentB是应该在recreate()之后显示的片段。 当我使用getSupportFragmentManager().getFragments()检查片段列表时,我看到1个FragmentA实例和16个FragmentB实例。 我的问题是为什么会发生这种情况,我该如何解决?

在相同片段的不同实例之间进行通信

问题如下。 让我们有3个带片段的标签: 标签1(片段A)。 需要将数据发送到选项卡2。 表2(片段B)。 需要从选项卡1接收数据。 表3(片段B)。 已经包含数据。 如您所见,选项卡3和选项卡2包含相同的片段但不同的实例。 如何将数据(不是通过参数)发送到Tab 2? 我尝试过的: 片段B在创建时通过参数设置唯一ID。 为片段B的两个实例注册相同的Local Broadcast Receiver 使用ID将数据从片段A发送到片段B. 在Fragment B onReceive()检查接收的ID是否等于Fragment的ID 但不幸的是,广播仅被发送到Tab 3。 编辑:更多信息。 这些选项卡使用ViewPager托管在另一个片段中。 这是由于NavigationDrawer组合,其中包含与ViewPager片段和提到的Tabs。

区域设置:未调用onConfigurationChanged

我希望我的语言动态更改,我正在尝试使用onConfigurationChanged但它没有被调用。 我有一个MainActivity,可以创建我的操作栏和viewpager。 我的其余页面都是碎片。 在我的SettingsFragment中,我有一个按钮可以将语言切换为法语。 langChange.setOnClickListener(new OnClickListener() { @Override public void onClick(View vi) { MainActivity main = (MainActivity)getActivity(); main.langChange(); } }); 然后在我的MainActivity中 @Override public void onConfigurationChanged(Configuration newConfig){ super.onConfigurationChanged(newConfig); if (locale != null){ newConfig.locale = locale; Locale.setDefault(locale); getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics()); } } public void langChange(){ if(currentLanguage == FRENCH_LANGUAGE){ locale = new Locale(“en”); Locale.setDefault(locale); Configuration c = getBaseContext().getResources().getConfiguration(); c.locale […]

RecyclerView.Adapter的onCreateViewHolder方法中的parent.getContext

我有一个附加到我的MainActivity的自定义片段。 片段的布局文件包含recyclerview小部件。 fragment_main.xml: 在我的RecyclerView.Adapter中,onCreateViewHolder方法如下所示: @Override public MyAdapter.MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout .list_item, parent, false); return new MyHolder(view); } 我的问题是关于此方法的Viewgroup父级。 这个ViewGroup是我的RecyclerView小部件,但为什么给我parent.getContext引用我的MainActivity而不是我的片段?