<html devsite="true">
  <head>
    <title>FragmentContainer</title>
{% setvar book_path %}/reference/androidx/_book.yaml{% endsetvar %}
{% include "_shared/_reference-head-tags.html" %}
  </head>
  <body>
    <h1>FragmentContainer</h1>
{% setvar page_path %}androidx/fragment/app/FragmentContainer.html{% endsetvar %}
{% setvar can_switch %}1{% endsetvar %}
{% include "reference/_java_switcher2.md" %}
    <p>
      <pre>public abstract class FragmentContainer</pre>
    </p>
    <div class="devsite-table-wrapper"><devsite-expandable><span class="expand-control jd-sumtable-subclasses">Known direct subclasses
        <div class="showalways" id="subclasses-direct"><a href="/reference/androidx/fragment/app/FragmentHostCallback.html">FragmentHostCallback</a></div>
      </span>
      <div id="subclasses-direct-summary">
        <div class="devsite-table-wrapper">
          <table class="responsive">
            <tbody>
              <tr>
                <td><code><a href="/reference/androidx/fragment/app/FragmentHostCallback.html">FragmentHostCallback</a></code></td>
                <td width="100%">
                  <p>Integration points with the Fragment host.</p>
                </td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
</devsite-expandable>    </div>
    <hr>
    <p>Callbacks to a <code><a href="/reference/androidx/fragment/app/Fragment.html">Fragment</a></code>'s container.</p>
    <h2>Summary</h2>
    <div class="devsite-table-wrapper">
      <table class="responsive">
        <thead>
          <tr>
            <th colspan="2"><h3>Public constructors</h3></th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>
              <div><code><a href="/reference/androidx/fragment/app/FragmentContainer.html#FragmentContainer()">FragmentContainer</a>()</code></div>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
    <div class="devsite-table-wrapper">
      <table class="responsive">
        <thead>
          <tr>
            <th colspan="2"><h3>Public methods</h3></th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td><code>@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a>&nbsp;<a href="/reference/androidx/fragment/app/Fragment.html">Fragment</a></code></td>
            <td width="100%">
              <div><code><span><del><a href="/reference/androidx/fragment/app/FragmentContainer.html#instantiate(android.content.Context,java.lang.String,android.os.Bundle)">instantiate</a></del></span>(Context&nbsp;context,&nbsp;<a href="https://developer.android.com/reference/java/lang/String.html">String</a>&nbsp;className,&nbsp;Bundle&nbsp;arguments)</code></div>
              <p><strong>This method is deprecated.</strong> 
                <p>Use <code><a href="/reference/androidx/fragment/app/FragmentManager.html#setFragmentFactory(androidx.fragment.app.FragmentFactory)">FragmentManager#setFragmentFactory</a></code> to control how Fragments are instantiated.</p>
              </p>
            </td>
          </tr>
          <tr>
            <td><code>abstract @<a href="/reference/androidx/annotation/Nullable.html">Nullable</a>&nbsp;View</code></td>
            <td width="100%">
              <div><code><a href="/reference/androidx/fragment/app/FragmentContainer.html#onFindViewById(int)">onFindViewById</a>(int&nbsp;id)</code></div>
              <p>Return the view with the given resource ID.</p>
            </td>
          </tr>
          <tr>
            <td><code>abstract boolean</code></td>
            <td width="100%">
              <div><code><a href="/reference/androidx/fragment/app/FragmentContainer.html#onHasView()">onHasView</a>()</code></div>
              <p>Return <code>{@code true}</code> if the container holds any view.</p>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
    <h2>Public constructors</h2>
    <div><a name="FragmentContainer--"></a>
      <h3 class="api-name" id="FragmentContainer()">FragmentContainer</h3>
      <pre class="api-signature no-pretty-print">public&nbsp;<a href="/reference/androidx/fragment/app/FragmentContainer.html#FragmentContainer()">FragmentContainer</a>()</pre>
    </div>
    <h2>Public methods</h2>
    <div><a name="instantiate(android.content.Context, java.lang.String, android.os.Bundle)"></a><a name="instantiate-android.content.Context-java.lang.String-android.os.Bundle-"></a>
      <h3 class="api-name" id="instantiate(android.content.Context,java.lang.String,android.os.Bundle)">instantiate</h3>
      <pre class="api-signature no-pretty-print">@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a><br>public&nbsp;@<a href="/reference/androidx/annotation/NonNull.html">NonNull</a>&nbsp;<a href="/reference/androidx/fragment/app/Fragment.html">Fragment</a>&nbsp;<span><del><a href="/reference/androidx/fragment/app/FragmentContainer.html#instantiate(android.content.Context,java.lang.String,android.os.Bundle)">instantiate</a></del></span>(Context&nbsp;context,&nbsp;<a href="https://developer.android.com/reference/java/lang/String.html">String</a>&nbsp;className,&nbsp;Bundle&nbsp;arguments)</pre>
      <aside class="caution"><strong>This method is deprecated.</strong><br>
        <p>Use <code><a href="/reference/androidx/fragment/app/FragmentManager.html#setFragmentFactory(androidx.fragment.app.FragmentFactory)">FragmentManager#setFragmentFactory</a></code> to control how Fragments are instantiated.</p>
      </aside>
      <p>Creates an instance of the specified fragment, can be overridden to construct fragments with dependencies, or change the fragment being constructed. By default just calls <code><a href="/reference/androidx/fragment/app/Fragment.html#instantiate(android.content.Context,java.lang.String,android.os.Bundle)">Fragment#instantiate(Context, String, Bundle)</a></code>.</p>
    </div>
    <div><a name="onFindViewById-int-"></a>
      <h3 class="api-name" id="onFindViewById(int)">onFindViewById</h3>
      <pre class="api-signature no-pretty-print">@<a href="/reference/androidx/annotation/Nullable.html">Nullable</a><br>public&nbsp;abstract&nbsp;@<a href="/reference/androidx/annotation/Nullable.html">Nullable</a>&nbsp;View&nbsp;<a href="/reference/androidx/fragment/app/FragmentContainer.html#onFindViewById(int)">onFindViewById</a>(int&nbsp;id)</pre>
      <p>Return the view with the given resource ID. May return <code>{@code null}</code> if the view is not a child of this container.</p>
    </div>
    <div><a name="onHasView--"></a>
      <h3 class="api-name" id="onHasView()">onHasView</h3>
      <pre class="api-signature no-pretty-print">public&nbsp;abstract&nbsp;boolean&nbsp;<a href="/reference/androidx/fragment/app/FragmentContainer.html#onHasView()">onHasView</a>()</pre>
      <p>Return <code>{@code true}</code> if the container holds any view.</p>
    </div>
  </body>
</html>
