从活动中膨胀片段

时间:2015-12-25 13:11:07

标签: android android-fragments

我想从活动中膨胀一些片段(这不是主要的,而是活动)。

我完全喜欢这条指令:

 FragmentManager fragmentManager = getFragmentManager();
  FragmentTransaction fragmentTransaction = 
  fragmentManager.beginTransaction();

  YourFragment fragment = new YourFragment();
  fragmentTransaction.replace(android.R.id.content, fragment);//here is the error
  fragmentTransaction.commit();

但是在最后一行之前,编辑器显示错误说:

  

第二个参数错误类型。发现:max.mzf.max.fragment.Required:android.app.fragment

这是我自己的代码:

活动

public class QuizCard extends FragmentActivity {

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.quiz_card);
    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction =      fragmentManager.beginTransaction();
    QcardFragment fragment = new QcardFragment();
    fragmentTransaction.replace(R.id.your_placeholder, fragment  );
    fragmentTransaction.commit();
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.card_menu, menu);

    return true;
}

这是QcardFragment:

public class QcardFragment extends Fragment {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //get data from Argument
}
public void onCardClick(View view) {
    flipCard();
}
private void flipCard() {
    View rootLayout = (View) getActivity().findViewById(R.id.main_activity_root);
    View cardFace = (View) getActivity().findViewById(R.id.main_activity_card_face);
    View cardBack = (View) getActivity().findViewById(R.id.main_activity_card_back);

    FlipAnimation flipAnimation = new FlipAnimation(cardFace, cardBack);

    if (cardFace.getVisibility() == View.GONE) {
        flipAnimation.reverse();
    }
    rootLayout.startAnimation(flipAnimation);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.qcardfragment, container, false);

}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);


}
}

怎么了?

1 个答案:

答案 0 :(得分:1)

确保您的片段类extends Fragment来自android本机库。如果您正在使用外部实现,请尝试更改

FragmentManager fragmentManager = getFragmentManager();

 FragmentManager fragmentManager = getSupportFragmentManager();