我遇到了麻烦。我有一个片段与onclicklistener。片段调用" ClickMe"在我的Activity中托管片段。但是,为了使ClickMe不会出错,ClickMe必须是静态的。但是,Clickme不能是静态的,因为getFragmentManager会出错。基本上我是在尝试制作一款游戏。点击将在旧版本的顶部放置一个新片段(因为你必须在我的游戏中连续10次做同样的事情。这里是代码:
片段:
text1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(loc1 == 10 || loc2 ==10){
//Text if user wins
BlankFragment.counter ++;
BlankFragment.ClickMe(BlankFragment.counter);
Log.i("Win: ", "Yay");
}else{
//Text if user loses
Log.i("Lose: ", "Boo");
}
}
});
MainActivity:
public void ClickMe(int count){
Fragment newFragment;
counter = count;
if(counter > 5){
newFragment = new g3by3Fragment();
}else{
newFragment = new g3by3Fragment();
}
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.container, newFragment);
transaction.addToBackStack(null);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
transaction.commit();
感谢您的帮助!
答案 0 :(得分:0)
您无需从FragmentTransactions
预先Activity
。你可以从Fragment
添加好预先形成它们。绕过Activity
到ClickMe
是不必要的。我知道你可能会这样做,因为你的游戏逻辑在Activity
,但这不是最佳的。让Fragments
自己决定下一个Fragment
或者实现一个负责游戏逻辑的Singleton。