2012-03-08 65 views
1

我有一個包含三個片段的尋呼機檢測屏幕上的一個片段

adapter.addFragment(new PlainColorFragment(Color.red));

adapter.addFragment(new PlainColorFragment(Color.green));

adapter.addFragment(new PlainColorFragment(Color.blue));

我的問題是,是否有可能檢測到碎片聚焦或正在顯示給用戶。

例如,當綠色的片段是在屏幕上顯示一個或具有焦點,顯示在屏幕

我希望我已經解釋正確,我的問題上「乾杯」。

感謝

回答

2

簡單:

greenFragment.isVisible(); 

如果你正在尋找一些類型的事件,你必須手動管理無論您在何處片段切換髮生,或在您的片段類,你可以在執行代碼片段的OnHiddenChanged事件(雙重檢查,當然,這是目前可見的)

0

您可以創建一個界面,在你的片段執行它,然後,在家長的活動,你可以實現BackStackChangedListener如下面的例子中:

public interface MyFragmentOnScreen { 

     public void onActiveFragment(); 
    } 

    public class MyFragment extends Fragment implements MyFragmentOnScreen{ 
     [...] 
     @Override 
    public void onActiveFragment() { 
//Things you should do when your fragment becomes active 
} 
    } 

public class MainActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
[...] 
     getSupportFragmentManager().addOnBackStackChangedListener(
       new FragmentManager.OnBackStackChangedListener() { 
        public void onBackStackChanged() { 
         // Update your UI here. 
         Log.v(MainActivity.TAG, "Backstack changed"); 

          if (getSupportFragmentManager().findFragmentById(R.id.frMain) instanceof MyFragmentOnScreen) { 
           ((MyFragmentOnScreen) getSupportFragmentManager().findFragmentById(R.id.frMain)).onActiveFragment(); 
          } 
         } 
        } 
       }); 
} 
} 

其中frMain是您的Fragment的MainActivity佈局中的持有者。