2014-04-27 111 views
0

我遇到了麻煩。我有一個onclicklistener片段。片段調用了我Activity中承載片段的「ClickMe」。但是,爲了使ClickMe不會出錯,ClickMe必須是靜態的。但是,Clickme不能是靜態的,因爲那樣getFragmentManager出錯了。基本上我正在嘗試創建一個遊戲。一次點擊將提出一個新片段在舊的頂部(因爲你必須做同樣的事情,10倍於我的比賽一排下面的代碼:從OnClickListener中替換片段

片段:

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

您不必從Activity瓶坯FragmentTransactions你可以只添加以及從0瓶坯他們!。你不必繞道ActivityClickMe。我知道你可能會這樣做,因爲你的遊戲邏輯在Activity,但這不是最佳的。讓Fragments自己決定接下來的哪一個Fragment或者實現一個處理你的遊戲邏輯的Singleton。

+0

這樣一個簡單的解決方案,我過度思考它。非常感謝你! – user3552105

+0

我很高興我能幫你。如果您認爲我的回答有幫助,請點擊旁邊的複選標記接受它。這向其他人表明,這個答案對你有幫助,它給了我們兩個小小的聲望。 –

+0

在片段中實現了代碼,它完美地工作。我接受了你的回答,再次感謝! – user3552105