1a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy/*
2a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy * Copyright (C) 2015 The Android Open Source Project
3a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy *
4a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy * Licensed under the Apache License, Version 2.0 (the "License");
5a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy * you may not use this file except in compliance with the License.
6a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy * You may obtain a copy of the License at
7a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy *
8a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy *      http://www.apache.org/licenses/LICENSE-2.0
9a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy *
10a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy * Unless required by applicable law or agreed to in writing, software
11a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy * distributed under the License is distributed on an "AS IS" BASIS,
12a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy * See the License for the specific language governing permissions and
14a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy * limitations under the License.
15a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy */
16a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy
17a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedypackage android.app;
18a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy
19a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedyimport android.annotation.IdRes;
20a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedyimport android.annotation.Nullable;
21b2852cab467ef0c1181a1d5096c43c29fdf6a875Jason Monkimport android.content.Context;
22b2852cab467ef0c1181a1d5096c43c29fdf6a875Jason Monkimport android.os.Bundle;
23a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedyimport android.view.View;
24a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy
25a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy/**
26a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy * Callbacks to a {@link Fragment}'s container.
27a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy */
28a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedypublic abstract class FragmentContainer {
29a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy    /**
30a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy     * Return the view with the given resource ID. May return {@code null} if the
31a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy     * view is not a child of this container.
32a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy     */
33a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy    @Nullable
3404fd470ce0166abb36d9be829d6e9b98a55eaf35Alan Viverette    public abstract <T extends View> T onFindViewById(@IdRes int id);
35a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy
36a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy    /**
37a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy     * Return {@code true} if the container holds any view.
38a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy     */
39a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy    public abstract boolean onHasView();
40b2852cab467ef0c1181a1d5096c43c29fdf6a875Jason Monk
41b2852cab467ef0c1181a1d5096c43c29fdf6a875Jason Monk    /**
42b2852cab467ef0c1181a1d5096c43c29fdf6a875Jason Monk     * Creates an instance of the specified fragment, can be overridden to construct fragments
43b2852cab467ef0c1181a1d5096c43c29fdf6a875Jason Monk     * with dependencies, or change the fragment being constructed. By default just calls
44b2852cab467ef0c1181a1d5096c43c29fdf6a875Jason Monk     * {@link Fragment#instantiate(Context, String, Bundle)}.
45f05458cf7ee9b1e2ec482126a8c2de1bf1315c8aAdam Powell     *
46f05458cf7ee9b1e2ec482126a8c2de1bf1315c8aAdam Powell     * @hide
47b2852cab467ef0c1181a1d5096c43c29fdf6a875Jason Monk     */
48b2852cab467ef0c1181a1d5096c43c29fdf6a875Jason Monk    public Fragment instantiate(Context context, String className, Bundle arguments) {
49b2852cab467ef0c1181a1d5096c43c29fdf6a875Jason Monk        return Fragment.instantiate(context, className, arguments);
50b2852cab467ef0c1181a1d5096c43c29fdf6a875Jason Monk    }
51a5fc6f006f67867417b7a427de6e7394c4312decTodd Kennedy}
52