我有一个简单的方法,我想把片段名作为参数传递。我几乎没有像这样的碎片
1) AddNewDatesFragment
2) AskFragment
3)免责声明片段
我有下面的代码可以正常工作
FragmentManager fragmentManager = activity.getSupportFragmentManager();
for (int entry = 0; entry < fragmentManager.getBackStackEntryCount(); entry++) {
Fragment fragment = (Fragment) fragmentManager.getBackStackEntryAt(entry);
if (fragment instanceof AddNewDatesFragment) {
Log.i("TAG", " Expected Fragment Found");
}
}
我想在方法中编写一些代码,在这里我可以调用这样的方法
isExistFragment(AddNewDatesFragment);
isExistFragment(AskFragment);
isExistFragment(DisclaimerFragment);
等
我曾经尝试过这样的代码,但在if条件下不工作会导致编译时错误。
private boolean isExistFragment(Class<Fragment> expectedFragment) {
FragmentManager fragmentManager = activity.getSupportFragmentManager();
for (int entry = 0; entry < fragmentManager.getBackStackEntryCount(); entry++) {
Fragment fragment = (Fragment) fragmentManager.getBackStackEntryAt(entry);
if (fragment instanceof expectedFragment) {
Log.i("TAG", " Expected Fragment Found");
return true;
}
}
return false;
}
我对实施这种方法感到好奇。谢谢
你也许可以用:
expectedFragment.isAssignableFVrom(fragment.getClass())
如果例外片段
类是片段
类的接口或超类(参见doc),则这将是true
。
(注意:您不能在exceptedFragment
上使用expectedFragment的片段实例,因为它是类而不是对象。)
我不知道这是不是最好的办法。但我会使用标签特性来达到类似的目的。
添加片段时,请设置标记以供以后识别:
fragmentManager.beginTransaction()
.replace(R.id.container, newlyAddFragment, TAG_FOR_THE_FRAGMENT)
.commit();
并实现如下所示:
boolean isExistFragment(String tag) {
Fragment targetFragment = fragmentManager.findFragmentByTag(tag);
return targetFragment != null;
}
getBackStackEntryAt(index)
不返回片段本身,它返回受尊重片段的backbackbackentry对象。
请看一看http://developer.android.com/reference/android/app/FragmentManager.html#getBackStackEntryAt(国际)
使用以下代码段从堆栈中检索片段:
Fragment fragment = (Fragment) fragmentManager
.findFragmentById(fragmentManager.getBackStackEntryAt(entry)
.getId());
在这里,首先你得到BackStackEntry的受尊重的碎片,通过它,你会得到碎片的碎片ID在perticular位置。然后通过id你可以很容易地检索碎片。
我有一个片段a,包含一个片段B。 当片段A处于onActivityCreated生命周期中时,我想从片段A向片段B传递一个参数(因为我有一个来自viewmodel的数据,该数据此时到达)。 在我的片段B中,我无法得到这个论点。我有一个空异常。 你有办法解决我的问题吗? 这是我的代码 片段A 片段B fragment_a.xml
问题内容: 我有以下代码: 但是我想将一个指向字节切片的指针传递给另一个函数,并在那里切片,所以类似: 它给我一个错误,我不能在函数参数中使用type 作为类型,并且不能对type进行切片。怎么了?默认情况下切片不是通过引用传递的吗?我试图在没有指针的情况下执行此操作,但是它不起作用- 正在复制数组。我怎样才能做到这一点? 问题答案: 该错误来自您尚未发布的拼写错误(您尝试传递一个切片而不是指向的
问题内容: 如何在不执行“父”函数或不使用函数的情况下将函数作为参数传递?(因为我已经读到它是不安全的。) 我有这个: 它可以工作,但是问题是在调用函数时触发,而不是在函数中使用时触发。 根据我所读的内容,我可以使用来解决它,但这不是最佳实践。如何在JavaScript中将函数作为参数传递? 问题答案: 您只需要删除括号: 然后,这将传递函数而不先执行它。 这是一个例子:
问题内容: 我可以将数组作为url参数传递的最佳方法是什么?我在想这是否可能: 还是这样: 香港专业教育学院阅读示例,但我发现它很混乱: 问题答案: 有一个非常简单的解决方案:。它把您的查询参数作为一个关联数组: 将返回 为您处理所有必需的转义(=> 和=> ),因此此字符串等于。
问题内容: 我有3类调用,和。 在我的课程中,我想要一个这样的方法: 因此,例如,我想: 如何将类名作为参数,并基于该类名从类名创建适当的对象? 问题答案: 使用反射是可能的。这里是给定的className(作为字符串传递)。此类将在内存中搜索(应该已经加载)。 作为字符串传递时要实例化的类的名称应 完全限定
问题内容: 我已经熟悉Android框架和Java,并希望创建一个通用的“ NetworkHelper”类,该类可以处理大多数联网代码,使我能够从中调用网页。 我遵循了来自developer.android.com的这篇文章来创建我的网络类:http : //developer.android.com/training/basics/network- ops/connecting.html 码: