5

У меня возникли проблемы с получением указателя на фрагмент, который является видимым в данный момент фрагментом в FragmentTabhost.findFragmentByTag - поиск фрагмента в FragmentTabHost - всегда null

У меня есть SherlockFragmentActivity называется SecondActivity, который загружает Tabhost от него это onCreate метод как это:

if (getSupportFragmentManager().findFragmentById(android.R.id.content) == null) { 
    Fragment f = new TabsFragment(); 

    getSupportFragmentManager().beginTransaction().add(android.R.id.content, f, "tabsfragment").commit(); 
} 

TabsFragment является SherlockFragment подкласс с этим onCreate метод для создания вкладок

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     mTabHost = new FragmentTabHost(getActivity()); 
     mTabHost.setup(getActivity(), getChildFragmentManager(), R.layout.tabs); 

     mTabHost.addTab(mTabHost.newTabSpec("Tab1").setIndicator("Offers", 
       getResources().getDrawable(R.drawable.offersale)), 
       OfferListFragment.class, 
       null); 

     mTabHost.addTab(mTabHost.newTabSpec("Tab2").setIndicator("News", 
       getResources().getDrawable(R.drawable.newspaper)), 
       NewsFragment.class, 
       null); 

     return mTabHost; 

    } 

Теперь, когда я во второй вкладке, у меня есть фоновая задача, выполняемая в классе, инициированном исходной активностью SecondActivity, тогда я вызываю это, чтобы дать мне ссылку на вкладку, но она всегда возвращает null!

NewsFragment newsView = (NewsFragment) delegate.getSupportFragmentManager().findFragmentByTag("Tab2");

delegate переменная является указателем обратно SecondActivity, когда он начинает фоновый класс.

Как получить указатель на фрагмент вкладки? Я ошибаюсь, что «Tab2», установленный при добавлении вкладок, является Tag для фрагмента?

ответ

19

Мне не нравится отвечать на мои вопросы, но это потрясающе, что спят на нем. Этот монстр дает мне указатель на фрагмент в tabhost

NewsFragment newsView = (NewsFragment) delegate 
         .getSupportFragmentManager() 
         .findFragmentByTag("tabsfragment") 
         .getChildFragmentManager() 
         .findFragmentByTag("Tab2"); 
+0

Великий ответ .. Вы сэкономите мое время .. Большое спасибо за вас ... :) – Gunaseelan

+0

превосходный ответ ..... –

Смежные вопросы