120680c49584c26f7818c2dec8fb00633af753e4aChris Banes/*
220680c49584c26f7818c2dec8fb00633af753e4aChris Banes * Copyright (C) 2015 The Android Open Source Project
320680c49584c26f7818c2dec8fb00633af753e4aChris Banes *
420680c49584c26f7818c2dec8fb00633af753e4aChris Banes * Licensed under the Apache License, Version 2.0 (the "License");
520680c49584c26f7818c2dec8fb00633af753e4aChris Banes * you may not use this file except in compliance with the License.
620680c49584c26f7818c2dec8fb00633af753e4aChris Banes * You may obtain a copy of the License at
720680c49584c26f7818c2dec8fb00633af753e4aChris Banes *
820680c49584c26f7818c2dec8fb00633af753e4aChris Banes *      http://www.apache.org/licenses/LICENSE-2.0
920680c49584c26f7818c2dec8fb00633af753e4aChris Banes *
1020680c49584c26f7818c2dec8fb00633af753e4aChris Banes * Unless required by applicable law or agreed to in writing, software
1120680c49584c26f7818c2dec8fb00633af753e4aChris Banes * distributed under the License is distributed on an "AS IS" BASIS,
1220680c49584c26f7818c2dec8fb00633af753e4aChris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1320680c49584c26f7818c2dec8fb00633af753e4aChris Banes * See the License for the specific language governing permissions and
1420680c49584c26f7818c2dec8fb00633af753e4aChris Banes * limitations under the License.
1520680c49584c26f7818c2dec8fb00633af753e4aChris Banes */
1620680c49584c26f7818c2dec8fb00633af753e4aChris Banes
1720680c49584c26f7818c2dec8fb00633af753e4aChris Banespackage android.support.v4.app;
1820680c49584c26f7818c2dec8fb00633af753e4aChris Banes
1920680c49584c26f7818c2dec8fb00633af753e4aChris Banesimport android.app.Activity;
2020680c49584c26f7818c2dec8fb00633af753e4aChris Banesimport android.content.Context;
2120680c49584c26f7818c2dec8fb00633af753e4aChris Banesimport android.os.Build;
2220680c49584c26f7818c2dec8fb00633af753e4aChris Banesimport android.os.Bundle;
2320680c49584c26f7818c2dec8fb00633af753e4aChris Banesimport android.util.AttributeSet;
2420680c49584c26f7818c2dec8fb00633af753e4aChris Banesimport android.view.View;
2520680c49584c26f7818c2dec8fb00633af753e4aChris Banes
2620680c49584c26f7818c2dec8fb00633af753e4aChris Banes/**
2720680c49584c26f7818c2dec8fb00633af753e4aChris Banes * Base class for {@code FragmentActivity} to be able to use Donut APIs.
2820680c49584c26f7818c2dec8fb00633af753e4aChris Banes */
2920680c49584c26f7818c2dec8fb00633af753e4aChris Banesabstract class BaseFragmentActivityDonut extends Activity {
3020680c49584c26f7818c2dec8fb00633af753e4aChris Banes
3120680c49584c26f7818c2dec8fb00633af753e4aChris Banes    @Override
3220680c49584c26f7818c2dec8fb00633af753e4aChris Banes    protected void onCreate(Bundle savedInstanceState) {
3320680c49584c26f7818c2dec8fb00633af753e4aChris Banes        if (Build.VERSION.SDK_INT < 11 && getLayoutInflater().getFactory() == null) {
3420680c49584c26f7818c2dec8fb00633af753e4aChris Banes            // On pre-HC devices we need to manually install ourselves as a Factory.
3520680c49584c26f7818c2dec8fb00633af753e4aChris Banes            // On HC and above, we are automatically installed as a private factory
3620680c49584c26f7818c2dec8fb00633af753e4aChris Banes            getLayoutInflater().setFactory(this);
3720680c49584c26f7818c2dec8fb00633af753e4aChris Banes        }
3820680c49584c26f7818c2dec8fb00633af753e4aChris Banes
3920680c49584c26f7818c2dec8fb00633af753e4aChris Banes        super.onCreate(savedInstanceState);
4020680c49584c26f7818c2dec8fb00633af753e4aChris Banes    }
4120680c49584c26f7818c2dec8fb00633af753e4aChris Banes
4220680c49584c26f7818c2dec8fb00633af753e4aChris Banes    @Override
4320680c49584c26f7818c2dec8fb00633af753e4aChris Banes    public View onCreateView(String name, Context context, AttributeSet attrs) {
4420680c49584c26f7818c2dec8fb00633af753e4aChris Banes        final View v = dispatchFragmentsOnCreateView(null, name, context, attrs);
4520680c49584c26f7818c2dec8fb00633af753e4aChris Banes        if (v == null) {
4620680c49584c26f7818c2dec8fb00633af753e4aChris Banes            return super.onCreateView(name, context, attrs);
4720680c49584c26f7818c2dec8fb00633af753e4aChris Banes        }
4820680c49584c26f7818c2dec8fb00633af753e4aChris Banes        return v;
4920680c49584c26f7818c2dec8fb00633af753e4aChris Banes    }
5020680c49584c26f7818c2dec8fb00633af753e4aChris Banes
5120680c49584c26f7818c2dec8fb00633af753e4aChris Banes    abstract View dispatchFragmentsOnCreateView(View parent, String name,
5220680c49584c26f7818c2dec8fb00633af753e4aChris Banes            Context context, AttributeSet attrs);
5320680c49584c26f7818c2dec8fb00633af753e4aChris Banes
5420680c49584c26f7818c2dec8fb00633af753e4aChris Banes}
55