java - Android Fragment初始化

标签 java android android-fragments

我是第一次与 Fragment 会面。所以对我来说有点复杂。我正在 android-hive 阅读教程.但是我无法理解这一点。有些东西我不明白。 有oneFragment(), twoFragment()... 但是我无法启动它们。所以,请完成这些中的任何一个......来自这个 link 的 oneFragmemt() 或 twoFragment() .我会很高兴的。帮帮我……

最佳答案

Muhamar,您总是需要在 Activity 中启动 fragment 。如果您的 fragment 1 具有此代码:

public class OneFragment extends Fragment{

    public OneFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

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

}

然后在主要 Activity 中,您可以像教程中所说的那样启动:

public class MainActivity extends AppCompatActivity {

  //blabla

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

    //blablabla
}

private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(new OneFragment(), "ONE");
    //blabla
    viewPager.setAdapter(adapter);
}

在这种情况下,主要 Activity 是使用适配器来显示多个 fragment ,因此您的代码中应该包含更多适配器文件,您也可以在教程中找到该文件。

更新:

如果你不想用适配器初始化 fragment ,你必须做两件事来初始化 fragment :

1) 将 fragment 放入布局中:在您的主要 Activity 的布局中,您必须包含一个 fragment 并对其进行标识(在此示例中 android:id="@+id/headlines_fragment "):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <fragment android:name="com.example.android.fragments.HeadlinesFragment"
              android:id="@+id/headlines_fragment"
              android:layout_weight="1"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

</LinearLayout>

2) 在您的主要 Activity 中插入 fragment :使用以下代码,您可以在您的 Activity 中添加 fragment :

public class MainActivity extends FragmentActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news_articles);



            OneFragment firstFragment = new OneFragment();

            // In case this activity was started with special instructions from an
            // Intent, pass the Intent's extras to the fragment as arguments
            firstFragment.setArguments(getIntent().getExtras());

            // Add the fragment to the 'fragment_container' FrameLayout
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.headlines_fragment, firstFragment).commit();

    }
}

更新 2: 要从适配器进行初始化,您只需将其添加到主要 Activity 中,如教程所述。在主要 Activity 中添加此类:

class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

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

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

        public void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }

希望对您有所帮助;)

关于java - Android Fragment初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36111901/

相关文章:

java - 用于识别 (JAVA) 代码内聚 block 的工具

java - 为什么 Spring Controller 不反序列化为 List 字段?

java - 如何控制 Android 工具栏中的菜单位置

android - 无法在非 Activity 、RecyclerView 适配器类中显示对话框

java - 在 Windows 中验证 tnsnames.ora 语法

java - 在 linux 中用 java 打印

android - 从 android 浏览器启动自定义 android 应用程序

java - 在java中,线程本地缓存内存在销毁时会刷新到主内存吗???

android-fragments - 如何在 Java 项目中使用 NavigationExtensions.kt?

android - 在添加内容之前必须调用 ActionBarActivity requestFeature