Articles of android fragments

如何在片段中使用Anko DSL?

Github wiki页面显示了在Activity实例中使用的这个例子: override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) verticalLayout { padding = dip(30) editText { hint = “Name” textSize = 24f } editText { hint = “Password” textSize = 24f } button(“Login”) { textSize = 26f } } } 如何在Fragment内做同样的事情? 我试图将该verticalLayout块放在onCreateView但该方法无法解析。 我添加了anko-support-v4依赖,但仍然没有运气。

具有相同菜单的片段在相同的布局上会导致重复的菜单项

我有一个有2个片段的布局。 这些片段使用相同的菜单,因为我有另一个布局只有其中一个(用于小屏幕设备)。 我的问题是菜单中显示每个片段的菜单项,因为它们来自同一个菜单,所以它们彼此重复。 我需要只显示一个片段的菜单,而不是两者。 无论如何我可以存档吗? 或者,可能更好,创建2个不同的菜单。 一个用于仅具有这些片段之一的布局(用于小屏幕设备),另一个用于具有两个片段的布局。 我怎么能这样做? 编辑:我使用ActionBarSherlock库来实现向后兼容,我在Android 3.0模拟器上测试它。

Android ViewPager:在ViewPager中更新屏幕外但缓存的片段

我有一个ViewPager,其片段中包含几个TextView,它们具有不同的字体大小。 另外,我有增加/减少字体大小的按钮,通过添加其默认大小加上一个名为STEP的值(由inc / dec字体大小按钮更改)来计算每个textView的字体大小。 我的问题是如果在应用大小更改后第一次显示视图,它将在onCreateView()期间创建所需大小的textViews但是如果片段已经缓存并且onCreateView没有再次调用,我不知道如何更新他们的textViews考虑到只有一个缓存的片段显示在屏幕上(我可以毫无问题地更新它)但是其他的不会显示(我不知道它们是否附加到活动或者在这种情况下不附加)。 换句话说,我如何检测ViewPager缓存了哪些片段及其已调用的onCreateView(这些片段必须应用更新到其视图的片段)。 我用浅绿色标记它们,下面的图片中有问号:

检查片段当前是否可见

我知道StackOverflow中有很多类似的问题,但我的问题却略有不同。 我有嵌套的Fragments层次结构,如下面的结构: Activity | | AFragment | (ViewPager) | | | | BFragment BFragment ….. | (ViewPager) | | | | CFragment CFragment … | (ViewPager) | | | | DFragment DFragment … 现在我想知道DFragment是否向用户显示? 我尝试了很多来自StackOverflow的解决方案,但无法取得成功。 我尝试的是: 我尝试了setUserVisibleHint()但它为上面层次结构中的多个DFragment返回true ,这是ViewPager一个原因 我也试过这些链接: link1 , link2 , link3等……但没有得到实际的解决方案。 等待帮助。 谢谢。 UPDATE 适配器类 class ViewPagerAdapter extends FragmentPagerAdapter { private final […]

菜单在片段的onCreateOptionsMenu上多次调用

我使用Fragments,当我切换到实现public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)嵌套Fragment时,当我到达嵌套片段时,我的菜单会膨胀一些次数。 我怎么能避免这个? 我还使用方法实现Fragment的构造函数: setRetainInstance(true); setHasOptionsMenu(true); 当我尝试将siple解决方案实现为: @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { // TODO Add your menu entries here if(!isInflated) { inflater.inflate(R.menu.contacts_archive_menu, menu); isInflated = true; } super.onCreateOptionsMenu(menu, inflater); } 但是我的菜单在屏幕旋转后没有膨胀。

在完成AsyncTask后,如何处理解除DialogFragment(兼容性lib)的问题

关于如何在AsyncTask期间处理配置更改的post很多,但是当AsyncTask完成并尝试关闭DialogFragment(兼容性库)时,我找不到关于后台应用程序(onPause())的明确解决方案。 这是问题,如果我有一个AsyncTask运行应该解雇onPostExecute()中的DialogFragment,如果应用程序在后台尝试关闭DialogFragment时,我会收到IllegalStateException。 private static class SomeTask extends AsyncTask { public SomeTask(SomeActivity tActivity) { mActivity = tActivity; } private SomeActivity mActivity; /** Set the view during/after config change */ public void setView(Activity tActivity) { mActivity tActivity; } @Override protected Boolean doInBackground(Void… tParams) { try { //simulate some time consuming process TimeUnit.SECONDS.sleep(3); } catch (InterruptedException ignore) {} […]

在Fragment中添加onOptionsItemSelected调用

@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_filter) { FragmentManager fm = getSupportFragmentManager(); if (userType.equals(“İş Arayan”)) filterDialogTitle […]

工具栏中的Android SearchView

我的活动中有工具栏,我曾尝试从菜单中添加搜索视图,但无法在工具栏中添加搜索视图,如何在我的活动工具栏中添加搜索视图。

如何在Android中单击ImageView时从一个片段移动到另一个片段?

我有一个ImageView。 我希望在点击Imageview时从一个片段移动到另一个片段,就像我们可以从一个活动移动到另一个活动一样 Intent i=new Intent(MainActivity.this,SecondActivity.class); startActivity(i); 我怎样才能做到这一点? 任何人都可以一步一步向我解释吗? 我的代码如下: mycontacts.class public class mycontacts extends Fragment { public mycontacts() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View v = super.getView(position, convertView, parent); ImageView purple=(ImageView)v.findViewById(R.id.imageView1); purple.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //how to […]

如何保存和重用相同的片段实例?

我最近开始使用片段创建了一个演示应用程序,如下所示: 单击每个按钮可在片段1,片段2和片段3之间切换。 我想要完成的是只有每个片段的一个实例并重用它。 (请注意,所有片段都是动态创建和添加的)。 目前我这样做是通过创建片段的HashMap并放置每个实例并从那里抓取它。 所以我的问题是:有没有更好的方法:使用FragmentManager的putFragment(…)方法? putFragment (Bundle bundle, String key, Fragment fragment)我无法弄清楚如何在我的情况下使用它。 如果有人能给我一个如何使用这种方法的例子。 在我的活动中保留每个片段的引用是否昂贵? 这会使所有碎片保持活着吗? 我正在使用软参考来解决这个问题,但我不确定这是否是正确的方法。 请指出我这样做的任何其他方式或让我知道这是否是实现这一目标的最佳方式。 提前致谢。 这是我的代码: 更新 :我正在尝试重用后端堆栈中的片段,尝试仅在后端堆栈中不存在时添加它们。 在我离开片段1后,下面的代码给了我非法状态exception – >回到它 – >然后尝试按下后退按钮: 10-28 13:21:40.255: ERROR/MessageQueue-JNI(3548): java.lang.IllegalStateException: Fragment already added: FragmentOne{423db570 #0 id=0x7f050006 fragOne} public class MainActivity extends Activity implements View.OnClickListener { private Button btnOne; private Button btnTwo; private Button btnThree; […]