从OnClickListener替换Fragment

时间:2014-04-27 18:42:54

标签: java android android-fragments

我遇到了麻烦。我有一个片段与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();

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您无需从FragmentTransactions预先Activity。你可以从Fragment添加好预先形成它们。绕过ActivityClickMe是不必要的。我知道你可能会这样做,因为你的游戏逻辑在Activity,但这不是最佳的。让Fragments自己决定下一个Fragment或者实现一个负责游戏逻辑的Singleton。