【问题标题】:Trying to launch fragment inside actionBarActivity尝试在 actionBarActivity 中启动片段
【发布时间】:2015-08-07 14:14:51
【问题描述】:

我已经检查了许多关于如何启动我的片段的解决方案,但到目前为止没有任何效果。感谢我能得到的任何帮助

我想要的是让片段内的内容显示出来。

我有 2 个可用的选项卡,但每个选项卡内的片段不显示内容,因为片段从未被午餐。这很奇怪,因为片段扩展了 actionBarActivity。但是,如果我让 mainActivity 扩展 fragmentActivity 工作,但我的选项卡没有。

Tab.setCurrentItem(tab.getPosition()); 好像不行

androidManifest 中的主题 android:theme="@style/Theme.AppCompat.Light.DarkActionBar"

主活动

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
    }
}

【问题讨论】:

    标签: android android-actionbar android-fragmentactivity android-actionbar-compat android-actionbaractivity


    【解决方案1】:

    TLDR;

    我看不到您将适配器设置为 ViewPager 的行

    在您的情况下,您应该添加以下内容:

    Tab.setAdapter(TabAdapter);
    

    首先,我建议使用AppCompatActivity,因为其他的都已贬值。

    另外我建议你不要使用actionbar.setNavigationMode() 方法,因为它也被贬值了。

    您还有很多其他选项可以实现标签导航。

    【讨论】:

    • 在我的 hack 中的某个时刻,我删除了那行,wtf.. 如果可以的话,我会给你 10 倍的重击。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多