2017-01-23 51 views
-1

如何在AboutAndHelpActivity而不是Activity本身启动Fragment,或者如何将Fragment置于startActivity()如何启动Fragment而不是Activitiy本身?

//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(); 

回答

0

你完全误解什么是活动和片段。再次阅读有关它们。

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

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

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

我知道区别。但是我想在应用程序第一次启动时启动一个片段。不仅是活动。我该怎么做.. – SGE59

+0

你有两个选择:1)添加片段到当前活动(一些启动活动)。 2)当你开始你的主要活动时,添加一些额外的东西来告诉活动显示片段。 – Ekalips

+0

你可以在'Intent'中加入'Extra'。把布尔“isFirstRun”和在活动做'getIntent()'和'getExtras()' – Ekalips

0

之前,你要考虑的活性和片段 我会建议你阅读一下 所以,你会得到的想法 请检查链接对于片段信息

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

您可以添加,在活动删除或替换片段0您应该管理片段生命周期。 否则,你可能如果我理解正确的话,你得到一些意想不到的UI或应用的问题

0

AboutAndHelpActivity是应该在应用程序的第一次运行房子片段开始。 如果是这样,启动活动部分已经解决了你最初的问题,所以剩下的就是显示片段。两个选项道理给我:

  1. 如果AboutAndHelpActivity的唯一工作就是房子的片段,并不会启动用于任何其他目的,片段可以被添加到其布局XML。

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

+0

感谢它的工作 – SGE59

相关问题