1

Я проверил количество решений о том, как запустить мой фрагмент, но пока ничего не работает. Я ценю любую помощь, которую я могу получитьПытается запустить фрагмент внутри actionBarActivity

Я хочу, чтобы содержимое внутри фрагмента отображалось.

У меня есть 2 вкладки, которые работают, но фрагмент внутри каждой вкладки не показывает его содержимое, потому что фрагмент никогда не обедает. Что странно, потому что фрагмент расширяется actionBarActivity. Но если я делаю mainActivity extende fragmentActivity, но тогда мои вкладки этого не делают.

Tab.setCurrentItem (tab.getPosition()); Кажется, не сделать трюк

Тема в androidManifest андроид: тема = "@ стиль/Theme.AppCompat.Light.DarkActionBar"

MainActivity

import android.os.Bundle; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.ActionBarActivity; 
import is.at.work.lottostokkur.R; 
import is.at.work.lottostokkur.adapter.TabPagerAdapter; 

public class MainActivity extends ActionBarActivity { 

ViewPager Tab; 
TabPagerAdapter TabAdapter; 
ActionBar actionBar; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    TabAdapter = new TabPagerAdapter(getSupportFragmentManager()); 
    actionBar = getSupportActionBar(); 

    Tab = (ViewPager)findViewById(R.id.pager); 
    Tab.addOnPageChangeListener(
      new ViewPager.SimpleOnPageChangeListener() { 
       @Override 
       public void onPageSelected(int position) { 
        actionBar = getSupportActionBar(); 
        actionBar.setSelectedNavigationItem(position); 
       } 
      }); 

    //Enable Tabs on Action Bar 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    ActionBar.TabListener tabListener = new ActionBar.TabListener() { 

     @Override 
     public void onTabSelected(ActionBar.Tab tab, android.support.v4.app.FragmentTransaction fragmentTransaction) { 
      Tab.setCurrentItem(tab.getPosition()); 

     } 

     @Override 
     public void onTabUnselected(ActionBar.Tab tab, android.support.v4.app.FragmentTransaction fragmentTransaction) { 

     } 

     @Override 
     public void onTabReselected(ActionBar.Tab tab, android.support.v4.app.FragmentTransaction fragmentTransaction) { 

     } 
    }; 
    //Add New Tab 
    actionBar.addTab(actionBar.newTab().setText("Lottó").setTabListener(tabListener)); 
    actionBar.addTab(actionBar.newTab().setText("About").setTabListener(tabListener)); 
} 
} 

И мой activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    android:id="@+id/lottoId" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="50sp"/> 

</LinearLayout> 

Это фрагмент, который я пытаюсь запустить

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 
import is.at.work.lottostokkur.R; 

public class LottoFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View view = inflater. 
       inflate(R.layout.lotto, container, false); 
     ((TextView)view.findViewById(R.id.textView)).setText("iOS"); 

     return view; 
    } 
} 

Мой адаптер

public class TabPagerAdapter extends FragmentStatePagerAdapter { 
    public TabPagerAdapter(FragmentManager fm) { 
     super(fm); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public Fragment getItem(int i) { 
     switch (i) { 
      case 0: 
       //Fragement for Lotto Tab 
       return new LottoFragment(); 
      case 1: 
       //Fragment for About Tab 
       return new AboutFragment(); 
     } 
     return null; 
    } 

    @Override 
     public int getCount() { 
     // TODO Auto-generated method stub 
     return 2; //No of Tabs 
    } 
} 

ответ

1

TLDR;

Я не могу видеть линию, что вы установили адаптер ViewPager

в вашем случае следует добавить следующее:

Tab.setAdapter(TabAdapter); 

Прежде всего, я бы рекомендовал использовать AppCompatActivity поскольку другие амортизируются.

А также я рекомендую вам не использовать метод actionbar.setNavigationMode(), потому что он также обесценивается.

у вас есть много других возможностей для перехода на вкладку.

+0

В какой-то момент в моем хаке я удалил эту строку, wtf .. Я бы дал вам 10-кратное удары, если бы мог. Спасибо! –