2016-02-07 2 views
0

У меня есть класс FragmentMain extends Fragment реализует TabHost.Загрузить новый фрагмент из фрагмента вкладки

public class FragmentNews extends Fragment implements TabHost.OnTabChangeListener { 

И в этом FragmentMain у меня есть фрагмент вкладка три дифферента (Fragmenta, FragmentB, FragmentC) все проходит фрагмент.

Из FragmentA Я хочу загрузить новый FragmentNews при нажатии на кнопку. При запуске приложения после нажатия кнопки я получил ошибку и приложение закрыть. Этот код:

Fragmenta класс

 public class FragmentMain extends Fragment { 
     private Button mbuton; 

     public MyNewsFragment() { 

      } 

      @Override 
      public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) { 
       // Inflate the layout for this fragment 
       View myNews = inflater.inflate(R.layout.fm_my_news, container, false); 

       mbuton= (Button)myNews.findViewById(R.id.bttest); 
       mbuton.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 

         FragmentNews fragment = new FragmentNews(); 

         getFragmentManager().beginTransaction() 
           .replace(R.id.fragment_container, fragment) 
           .commit(); 
    ..... 
return (myNews); 
    } 

Обратите внимание, что эта работа, когда Fragmenta не в табл.

Моего FragmentMain содержать что-то вроде этого:

FragmentMain класса

public class FragmentMain extends Fragment implements TabHost.OnTabChangeListener { 
    ViewPager viewPager; 
    TabHost tabHost; 
    View vnews; 


    public FragmentMain() { 

    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View newshow = inflater.inflate(R.layout.fm_news_layout, container, false); 
     ((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("Actualités"); 
     vnews= initViewPager(newshow); 

     initTabHost(newshow); 

     return (vnews); 
    } 

    private View initViewPager(View newshow){ 

     viewPager = (ViewPager)newshow.findViewById(R.id.view_pagerr); 

     List<Fragment> listFragments = new ArrayList<Fragment>(); 
     listFragments.add(new FragmentA()); 
     listFragments.add(new FragmentB()); 
... 

     MyFragmentPagerAdapter myFragmentPagerAdapter = new MyFragmentPagerAdapter(
       getChildFragmentManager(), listFragments);//getChildFragmentManager instead getFragmentManager to avoid Tab content disappeared after change page 
     viewPager.setAdapter(myFragmentPagerAdapter); 

И моего MyFragmentPagerAdapter класса

public class MyFragmentPagerAdapter extends FragmentPagerAdapter{ 

    List<Fragment> listFragments; 

    public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> listFragments) { 
     super(fm); 
     this.listFragments = listFragments; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return listFragments.get(position); 
    } 

    @Override 
    public int getCount() { 
     return listFragments.size(); 
    } 

Im нового в Android так, пожалуйста, помогите !!!!

+1

Добро пожаловать в StackOverflow. Пожалуйста, найдите минутку, чтобы ознакомиться с рекомендациями по публикации вопросов в Справочном центре. Вам нужно указать конкретный вопрос. Также предоставьте информацию об ОШИБКЕ, которую вы получаете. –

ответ

0

Попробуйте getChildFragmentManager() вместо getFragmentManager()

+0

Спасибо. Но все равно не работайте – DaveDBar

+0

Пожалуйста, напишите трассировку стека ошибки – Tieru

+0

Пожалуйста, как я могу реализовать, получить и отправить трассировку стека ошибки – DaveDBar

0

Это то, что я получаю в LogCat VERBOSE

02-08 11:24:34.768 1304-1323/? I/ActivityManager: Displayed com.graceform.mds.bvrmnewdemo/.MainEntry: +1s46ms 
02-08 11:24:39.111 1304-1316/? I/ActivityManager: START u0 {cmp=com.graceform.mds.bvrmnewdemo/.MainActivity (has extras)} from uid 10057 on display 0 
02-08 11:24:41.668 1304-1323/? I/ActivityManager: Displayed com.graceform.mds.bvrmnewdemo/.MainActivity: +2s508ms 
02-08 11:24:55.909 1304-1801/? W/ActivityManager: Force finishing activity com.graceform.mds.bvrmnewdemo/.MainActivity 

                [ 02-08 11:24:55.926 1304: 1801 D/   ] 
                HostConnection::get() New Host Connection established 0x9bb47c60, tid 1801 
02-08 11:24:56.507 1304-1318/? W/ActivityManager: Activity pause timeout for ActivityRecord{9c508d4 u0 com.graceform.mds.bvrmnewdemo/.MainActivity t250 f} 
02-08 11:24:59.921 1304-1316/? I/WindowState: WIN DEATH: Window{af4bebe u0 com.graceform.mds.bvrmnewdemo/com.graceform.mds.bvrmnewdemo.MainActivity} 

Благодарности

+0

Это не полный журнал. Попробуйте выполнить поиск по слову «Исключение», помеченному как «Ошибка» (цветной красный). – Tieru

+0

Вместо того, чтобы добавлять ответ, отредактируйте свое сообщение и добавьте в него stacktrace. – Tieru

+1

Думает, что все в порядке. getParentFragment(). getFragmentManager(). BeginTransaction() – DaveDBar

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