5

Tôi đang gặp sự cố khi nhận con trỏ đến Phân đoạn, đây là đoạn hiện có trong FragmentTabhost.findFragmentByTag - tìm kiếm phân đoạn trong FragmentTabHost - luôn luôn rỗng

Tôi có một SherlockFragmentActivity gọi SecondActivity rằng tải Tabhost từ nó onCreate phương pháp như thế này:

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

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

TabsFragment là một lớp con SherlockFragment với phương pháp onCreate này để tạo ra các tab

@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; 

    } 

Bây giờ khi Tôi đang ở trong tab thứ hai, tôi có một nhiệm vụ nền được thực hiện trong một lớp học được khởi xướng bởi hoạt động ban đầu SecondActivity, sau đó tôi gọi đây là upposed để cho tôi một tham chiếu đến tab, nhưng nó luôn luôn trả về null!

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

Biến delegate là một con trỏ trở lại SecondActivity khi nó bắt đầu lớp nền.

Làm cách nào để có con trỏ đến đoạn của tab? Tôi có sai khi thiết lập "Tab2" khi thêm các tab là Tag cho đoạn không?

Trả lời

19

Tôi thực sự không thích trả lời các câu hỏi của riêng mình, nhưng thật tuyệt vời khi ngủ trên đó có thể làm được. quái vật này mang lại cho tôi một con trỏ đến đoạn trong tabhost

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

Great câu trả lời .. Bạn tiết kiệm thời gian của tôi .. Big thanks cho bạn ... – Gunaseelan

+0

câu trả lời tuyệt vời :) ..... –

Các vấn đề liên quan