为什么方法getBackStackEntryCount总是返回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

看起来像你错过了活动 –

您正在使用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'方法。 –