2012-05-15 82 views
0

如何将类转换为片段?我有以下情况:将类转换为片段对象

片段碎片;

现在我想一些值分配给这样的片段:

片段= SomeClass.class。

如何cani类型投它。谢谢

回答

2

为什么你想把SomeClass作为片段?如果SomeClass是Fragment的子类,那么您不应该将它转换为将参考存储在Fragment变量中,而只是将其作为SomeClass检索。如果SomeClass不是Fragment的子类,则不应该试图将它作为一个整体进行投射。

0

您可以使用以下语法:fragment = SomeClass.class如果SomeClass扩展Fragment。另一种方式:SomeClass可以实现片段,然后在代码中:

fragment= (Fragment)SomeClass.class 
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(); 

我在这里交换从我拿现在的片段,如果不存在,我创建别的我重新添加一个菜单位置。 我也将片段类名称作为片段。 - 如果该类不存在,我还没有检查它 - 所以请小心