我正在使用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并用另一个片段替换整个片段,我认为它应该在活动中完成但是如何? 附:结构是活动保存片段,其中包含卡片。
答案 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();
}
}
然后它工作正常。