在视图中动态添加片段

时间:2012-07-29 10:09:17

标签: android android-layout android-fragments

我已经开始使用此How do I add a Fragment to an Activity with a programmatically created content view

在活动中创建和添加片段。

但是当我试图在动态视图中添加相同的片段时,它失败了。

请你解决背后的问题。

public class MainActivity extends FragmentActivity {

    private static final int CONTENT_VIEW_ID = 10101010;
    private static final int CONTENT_VIEW_ID1 = 10101011;

    public FragmentManager fm = getSupportFragmentManager();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        View view = new View(this);

        FrameLayout frame = new FrameLayout(this);
        frame.setId(CONTENT_VIEW_ID);
        frame.addView(view,new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        view.setId(CONTENT_VIEW_ID1);
        setContentView(frame);
        if (savedInstanceState == null) {
            Fragment newFragment1 = new DebugExampleTwoFragment();
            FragmentTransaction ft = fm.beginTransaction(); 
            ft.add(CONTENT_VIEW_ID1, newFragment1);
            ft.commit();
        }

public static class DebugExampleTwoFragment extends Fragment {
        public static int count = 0;

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View v = new View(getActivity());
            v.setBackgroundColor(Color.RED);
            return v;
        }
    }

ClassCastException失败,未显示确切的行号。

1 个答案:

答案 0 :(得分:3)

您可能会收到这样的消息:

  

java.lang.ClassCastException:android.view.View无法强制转换为   android.view.ViewGroup

那是因为片段可以插入ViewGroup或继承自ViewGroup的东西。您无法将片段插入View。要使代码运行,请更改此行:

View view = new View(this);

例如,这个:

FrameLayout view = new FrameLayout(this);//FrameLayout inherits from ViewGroup