2

私は jfeinstein のSlidingMenuを使用しています。現在、特定のフラグメントがユーザーに表示されているかどうかを確認しようとしています。私が最初に試した:

    if(mainfrag.isVisible()){
        Log.d("Frag","Main is visible");
    }else{
        Log.d("Frag","Main is NOT visible");
    }

フラグメントが表示されないことを常に出力しました。次に試しました:

android.support.v4.app.FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
Log.d("Frag","CurFrag: "+fragmentManager.findFragmentById(R.id.content_frame).toString());

MainFragment mf = new MainFragment();
if(fragmentManager.findFragmentById(R.id.content_frame) == mf){
    Log.d("Frag","This is Main");

}else{
    Log.d("Frag","This is NOT Main :(");

}

これは印刷します

ここに画像の説明を入力

したがってfindFragmentById、現在のフラグメントが表示されることはわかっていますが、それを論理的に比較する方法がわからないため、表示されている場合にのみ実行できます。

4

2 に答える 2

7

私は SlidingMenu の詳細に飛び込んだことがなく、最初の問題の何が問題なのかわかりませんでした。

しかし、2 番目の問題では、2 つの異なるオブジェクトを比較しています。

MainFragment mf = new MainFragment();
fragmentManager.findFragmentById(R.id.content_frame) == mf

ここでは、新しい MainFragment を作成し、それを古いインスタンスと比較しようとします。それは決して真実ではありません。オブジェクトを比較する場合、アドレスが比較されます。それらが同じオブジェクトである場合にのみ true を返します。

オブジェクトのクラスを確認するだけの場合は、次のコードを使用します。

Fragment f = fragmentManager.findFragmentById(R.id.content_frame);
if(f instanceof MainFragment)
    // code here.
于 2013-08-31T02:54:53.143 に答える
0

タグまたは I'd でフラグメントを取得します

フラグメントのビューを取得する

ビューでウィンドウの可視性を取得すると、可視性が提供されます

于 2013-08-31T03:14:18.590 に答える