2017-02-25 6 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()を使用してスタックエントリ数を取得しています。あなたのフラグメントがandroid.support.v4.fragmentであれば、あなたのフラグメントはandroid.app.FragmentgetSupportFragmentManager()ある場合

getFragmentManager().getBackStackEntryCount() 

getFragmentManager()

使用が使用されています。これらのフラグメントの詳細情報については

Difference between android.app.Fragment and android.support.v4.app.Fragment

+0

のコードを逃したように、これは正しい答えであるに見えます。 –

+0

はまだ0を返す:( – jack

+0

'onCreateView'が実行され、rootViewが返されるとフラグメントが作成されます.logステートメントを' onViewCreated'メソッドに移動します。 –

関連する問題