如何将类转换为片段?我有以下情况:
片段片段;
现在我想为这个片段分配一些值,如:
fragment = SomeClass.class。
cani怎么打造它?感谢
答案 0 :(得分:2)
为什么要将SomeClass强制转换为片段?如果SomeClass是Fragment的子类,那么你不应该将它强制转换为在Fragment变量中存储引用,而只是将它作为SomeClass检索。如果SomeClass不是Fragment的子类,那么你不应该试图把它作为一个子类。
答案 1 :(得分:0)
您可以使用以下语法:fragment = SomeClass.class如果SomeClass扩展Fragment。另一种方式:SomeClass可以实现Fragment,然后在代码中:
fragment= (Fragment)SomeClass.class
答案 2 :(得分:0)
试试这个。 它对我有用。
Class cur_class_frag = null;
switch (position) {
case 1:
cur_class_frag = Some_Fragment_Class.class;
cur_frag="recipees";
break;
case 2:
cur_class_frag = Facebook_Fragment_Class.class; //facebok
cur_frag="facebook";
break;
case 3:
cur_class_frag = Twitter_Fragment_Class.class; //twitter
cur_frag="twitter";
default:
break;
}
android.app.FragmentManager fragmanager = getFragmentManager();
//check if tag already exists
Fragment fragment2 = fragmanager.findFragmentByTag(cur_frag);
if (fragment2 !=null) {
//remove and add in content frame
fragmanager.beginTransaction().remove(fragment2).commit();
fragmanager.beginTransaction()
//.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out)
.replace(R.id.content_frame, fragment2,cur_frag)
.commit();
}
else{
//create it :)
Fragment frag = null;
try {
frag = (Fragment) cur_class_frag.newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
fragmanager.beginTransaction().add(R.id.content_frame, frag,cur_frag).commit();
这里我正在切换一个菜单位置,从中取出当前片段,如果还没有,我创建它,否则我重新添加它。 我也将片段类名称转换为片段。 - 如果班级不存在,我还没有检查过.--所以要小心