pl.acieslinski.moviefun.fragments.PortableFragment.java Source code

Java tutorial

Introduction

Here is the source code for pl.acieslinski.moviefun.fragments.PortableFragment.java

Source

/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package pl.acieslinski.moviefun.fragments;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.View;
import android.view.ViewGroup;

/**
 * @author Arkadiusz Cieliski 09.12.15.
 *         <acieslinski@gmail.com>
 */

public abstract class PortableFragment extends Fragment {
    @Nullable
    private ViewGroup mContainerToSwitch;

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        if (mContainerToSwitch != null) {
            switchContainer(mContainerToSwitch);
            mContainerToSwitch = null;
        }
    }

    public void setContainer(ViewGroup container) {
        if (!switchContainer(container)) {
            mContainerToSwitch = container;
        }
    }

    private boolean switchContainer(ViewGroup container) {
        View view = getView();
        boolean changed = false;

        if (view != null) {
            ViewGroup parent = (ViewGroup) view.getParent();

            if (parent != null) {
                parent.removeView(view);
                changed = true;
            }

            container.addView(view);
        }

        return changed;
    }
}