0

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

片断片断;

现在我想为这个片段分配一些值,例如:

片段= SomeClass.class。

cani type cast它如何。?谢谢

4

3 回答 3

2

为什么要将 SomeClass 转换为 Fragment?如果 SomeClass 是 Fragment 的子类,那么您不必将其转换为将引用存储在 Fragment 变量中,只需将其作为 SomeClass 检索。如果 SomeClass 不是 Fragment 的子类,则不应尝试将其强制转换为一个子类。

于 2012-05-15T15:38:24.290 回答
0

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

fragment= (Fragment)SomeClass.class
于 2012-05-15T15:39:48.693 回答
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();

在这里,我正在切换一个菜单位置,从中获取当前片段,如果不存在,则创建它,否则我重新添加它。我也将片段类名称转换为片段。-- 如果该类不存在,我还没有检查过。--所以要小心

于 2014-03-27T18:48:45.807 回答