如何启动Fragment而不是Activitiy本身?

时间:2017-01-23 15:50:50

标签: android android-fragments main-activity

如何在Fragment而不是AboutAndHelpActivity本身中启动Activity,或者如何将Fragment放入startActivity()

//if it is the first start of the app, open HelpFragment once.

    Boolean isFirstRun = getSharedPreferences("PREFERENCE", MODE_PRIVATE)
            .getBoolean("isFirstRun", true);
    if (isFirstRun) {

        startActivity(new Intent(MainActivity.this, AboutAndHelpActivity.class));
        Toast.makeText(MainActivity.this, "First Run", Toast.LENGTH_LONG)
                .show();
    }
    getSharedPreferences("PREFERENCE", MODE_PRIVATE).edit()
            .putBoolean("isFirstRun", false).commit();

3 个答案:

答案 0 :(得分:0)

你完全误解了什么是活动和碎片。再次阅读它们。

tl; dr:活动 - 基本单位。片段 - 部分。片段只能在某些活动中托管,并且不能以其他方式显示。

这里是如何在活动中显示片段的:

getSupportFragmentManager().beginTransaction()
            .replace(R.id.fragment_holder,new MyFragment())
            .addToBackStack(MyFragment.class.getSimpleName())
            .commit();

答案 1 :(得分:0)

在你想要考虑活动和片段之前 我建议你阅读一下 这样你就会明白 请查看链接以获取片段信息

https://developer.android.com/guide/components/fragments.html

您可以添加,删除或替换活动中的片段 您应该管理片段生命周期。 否则,您可能会遇到一些意外的UI或应用程序问题

答案 2 :(得分:0)

如果我理解正确,AboutAndHelpActivity应该是在应用首次运行的情况下启动片段。 如果是这样,启动活动部分已经在您的初始问题中解决了,那么剩下的就是显示片段。两个选项对我有意义:

  1. 如果AboutAndHelpActivity的唯一工作是放置Fragment并且不会出于任何其他目的,可以将Fragment添加到其布局xml中。

  2. 否则,需要根据@Ekalips已经指出的Intent extra动态添加Fragment。