4

私はこれから始めましたプログラムで作成されたコンテンツビューを使用してアクティビティにフラグメントを追加するにはどうすればよいですか

アクティビティ内にフラグメントを作成して追加します。

しかし、動的ビュー内に同じフラグメントを追加しようとすると、失敗しました。

その背後にある問題に対処していただけますか。

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正確な行番号が表示されないため失敗しました。

4

1 に答える 1

4

おそらく次のようなメッセージが表示されます。

java.lang.ClassCastException: android.view.View は android.view.ViewGroup にキャストできません

これは、 Fragment を に挿入しViewGroupたり、 から継承したものにしたりできるためViewGroupです。にフラグメントを挿入することはできませんView。コードを実行するには、次の行を変更します。

View view = new View(this);

たとえば、これに:

FrameLayout view = new FrameLayout(this);//FrameLayout inherits from ViewGroup
于 2012-07-29T15:42:00.100 に答える