使用cardlib从卡中调用另一个片段

时间:2014-04-24 09:53:53

标签: android android-fragments libraries

我正在使用https://github.com/gabrielemariotti/cardslib来实现片段中的卡片。 当我点击一张卡片时,它应该替换包含它的片段并加载另一个片段,这可能吗?

public class MyCard extends Card {


/**
 * Constructor with a custom inner layout
 *
 * @param context
 */
public MyCard(Context context) {
    this(context, R.layout.card_layout);
}

/**
 * @param context
 * @param innerLayout
 */
public MyCard(Context context, int innerLayout) {
    super(context, innerLayout);
    init();
}

/**
 * Init
 */
private void init() {

    //No Header


    //Set a OnClickListener listener
    setOnClickListener(new OnCardClickListener() {
        @Override
        public void onClick(Card card, View view) {
            Toast.makeText(getContext(), "Click Listener card=", Toast.LENGTH_LONG).show();

 //Here




        }
    });
}

在这里,我想调用FragmentManager并用另一个片段替换整个片段,我认为它应该在活动中完成但是如何? 附:结构是活动保存片段,其中包含卡片。

2 个答案:

答案 0 :(得分:0)

您可以将onClickListener附加到CardView,我相信没有必要扩展基本的Card课程。在此onClickListener只需FragmentManager通过getActivity

cardView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        FragmentManager fragmentManager = getActivity().getFragmentManager();
        fragmentManager.beginTransaction()
                       .//do stuff
    }
});

答案 1 :(得分:0)

这是答案: 我通过构造函数获得了MainActivity的实例。

public MyCard(Context context, int innerLayout) {
    super(context, innerLayout);
    mActivity=((MainActivity)context);
    init();
}
private void init() {

    //Set a OnClickListener listener
    setOnClickListener(new OnCardClickListener() {
        @Override
        public void onClick(Card card, View view) {
            Toast.makeText(getContext(), "Click Listener card=", Toast.LENGTH_LONG).show();
            baseFragment = new ElderCallStatusFragment();

            mActivity.openFragment(baseFragment);
        }
    });
}

我调用了MainActivity中的方法来做片段事务:

 public void openFragment(BaseFragment baseFragment){
    if (baseFragment != null){
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ft.replace(R.id.fragment_main, baseFragment);
        ft.commit();
        if (baseFragment.getTitleResourceId()>0)
            mCurrentTitle = baseFragment.getTitleResourceId();
    }
}

然后它工作正常。