2017-02-25 183 views
0

我需要計數我的片段,我使用getbackstackentrycount,但它總是返回0.有人能告訴我什麼是我的代碼錯了嗎?爲什麼方法getBackStackEntryCount總是返回0

這裏我的代碼MainActivity.java

package com.example.bams.taskagain; 

import android.app.Fragment; 
import android.app.FragmentManager; 
import android.app.FragmentTransaction; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 

import com.example.bams.taskagain.Fragment.FragmentOne; 

public class MainActivity extends AppCompatActivity { 
Button btn; 
FragmentManager fm = getFragmentManager(); 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    btn = (Button) findViewById(R.id.fragOne); 

    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      fm.beginTransaction().add(R.id.content, new FragmentOne()).addToBackStack("aa").commit(); 
      //Toast.makeText(getBaseContext(), "fuck", Toast.LENGTH_LONG).show(); 
     } 
    }); 

} 

}

,這裏是我的fragment

package com.example.bams.taskagain.Fragment; 

import android.app.Fragment; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v7.app.AppCompatActivity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import com.example.bams.taskagain.R; 

/** 
* Created by jack on 25/02/2017. 
*/ 

public class FragmentOne extends Fragment { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     System.out.println("Total back stack "+ ((AppCompatActivity)getActivity()).getSupportFragmentManager().getBackStackEntryCount()); 
    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_one,container,false); 

     return rootView; 
     } 
    } 

有人可以幫助我與我的代碼? 我只想得到我的分數有的BackStack數。

+0

看起來像你錯過了活動 –

回答

1

您正在使用android.app.Fragmentandroid.app.FragmentManager,但使用getSupportFragmentManager()來取回堆棧入口計數。

使用

getFragmentManager().getBackStackEntryCount() 

getFragmentManager()如果你的片段是android.app.FragmentgetSupportFragmentManager()如果你的片段是android.support.v4.fragment使用。

有關這些碎片的詳細信息,看看Difference between android.app.Fragment and android.support.v4.app.Fragment

+0

的代碼,這是正確的答案。 –

+0

仍然返回0 :( – jack

+0

一旦執行了'onCreateView'並且返回了rootView就創建了片段。移動log語句到'onViewCreated'方法。 –

相關問題