Demo0Fragment.java 5.2 KB
Newer Older
B
Blankj 已提交
1 2 3 4 5 6
package com.blankj.androidutilcode.fragment;

import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
B
Blankj 已提交
7
import android.support.v4.view.ViewCompat;
B
Blankj 已提交
8 9 10
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
B
Blankj 已提交
11
import android.widget.Button;
B
Blankj 已提交
12 13 14
import android.widget.TextView;

import com.blankj.androidutilcode.R;
B
Blankj 已提交
15
import com.blankj.androidutilcode.activity.FragmentActivity;
B
Blankj 已提交
16 17 18 19 20 21 22 23 24 25 26 27 28 29
import com.blankj.utilcode.utils.FragmentUtils;
import com.blankj.utilcode.utils.ToastUtils;

import java.util.Random;

/**
 * <pre>
 *     author: Blankj
 *     blog  : http://blankj.com
 *     time  : 17/02/02
 *     desc  :
 * </pre>
 */
public class Demo0Fragment extends Fragment
B
Blankj 已提交
30
        implements View.OnClickListener,FragmentUtils.OnBackClickListener {
B
Blankj 已提交
31 32 33 34 35 36 37 38 39 40 41 42

    private Fragment fragment1;

    public static Demo0Fragment newInstance() {

        Bundle args = new Bundle();

        Demo0Fragment fragment = new Demo0Fragment();
        fragment.setArguments(args);
        return fragment;
    }

B
Blankj 已提交
43
    private Button   btnShowAboutFragment;
B
Blankj 已提交
44 45 46 47 48 49 50 51 52 53
    private TextView tvAboutFragment;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_demo0, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
B
Blankj 已提交
54 55 56 57
        btnShowAboutFragment = (Button) view.findViewById(R.id.btn_show_about_fragment);
        btnShowAboutFragment.setOnClickListener(this);
        view.findViewById(R.id.btn_add_hide).setOnClickListener(this);
        view.findViewById(R.id.btn_add_show).setOnClickListener(this);
B
Blankj 已提交
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
        view.findViewById(R.id.btn_add_child).setOnClickListener(this);
        view.findViewById(R.id.btn_pop_to_root).setOnClickListener(this);
        view.findViewById(R.id.btn_pop_add).setOnClickListener(this);
        view.findViewById(R.id.btn_hide_show).setOnClickListener(this);
        view.findViewById(R.id.btn_replace).setOnClickListener(this);
        tvAboutFragment = (TextView) view.findViewById(R.id.tv_about_fragment);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        Random random = new Random();
        FragmentUtils.setBackgroundColor(this, Color.rgb(random.nextInt(256), random.nextInt(256), random.nextInt(256)));
        super.onActivityCreated(savedInstanceState);
    }

    @Override
    public void onClick(View view) {
        tvAboutFragment.setText("");
        switch (view.getId()) {
B
Blankj 已提交
77 78 79 80 81 82 83
            case R.id.btn_show_about_fragment:
                tvAboutFragment.setText("---all fragments---\n"
                        + FragmentUtils.getAllFragments(getFragmentManager()).toString()
                        + "\n-------------------\n\n"
                        + "---stack top---\n"
                        + FragmentUtils.getAllFragmentsInStack(getFragmentManager()).toString()
                        + "\n---stack bottom---\n\n"
B
Blankj 已提交
84
                        + "\ntopFragment: " + FragmentUtils.getLastAddFragment(getFragmentManager()).getClass().getSimpleName()
B
Blankj 已提交
85 86 87 88 89
                        + "\ntopShowFragment: " + FragmentUtils.getTopShowFragment(getFragmentManager()).getClass().getSimpleName()
                );
                break;
            case R.id.btn_add_hide:
                FragmentUtils.addFragment(getFragmentManager(), Demo1Fragment.newInstance(), R.id.fragment_container, true, true);
B
Blankj 已提交
90
                break;
B
Blankj 已提交
91 92
            case R.id.btn_add_show:
                FragmentUtils.addFragment(getFragmentManager(), Demo1Fragment.newInstance(), R.id.fragment_container, false, true);
B
Blankj 已提交
93 94 95 96 97 98 99 100
                break;
            case R.id.btn_add_child:
                FragmentUtils.addFragment(getChildFragmentManager(), Demo2Fragment.newInstance(), R.id.child_fragment_container, false, true);
                break;
            case R.id.btn_pop_to_root:
                FragmentUtils.popToFragment(getFragmentManager(), Demo1Fragment.class, true);
                break;
            case R.id.btn_pop_add:
B
Blankj 已提交
101 102
                ViewCompat.setTransitionName(btnShowAboutFragment, "addSharedElement");
                FragmentUtils.popAddFragment(getFragmentManager(), R.id.fragment_container, Demo2Fragment.newInstance(), true, new FragmentUtils.SharedElement(this.btnShowAboutFragment, "btnShowAboutFragment"));
B
Blankj 已提交
103 104
                break;
            case R.id.btn_hide_show:
B
Blankj 已提交
105 106 107
                Fragment fragment1 = FragmentUtils.findFragment(getFragmentManager(), Demo1Fragment.class);
                if (fragment1 != null) {
                    FragmentUtils.hideShowFragment(this, fragment1);
B
Blankj 已提交
108
                } else {
B
Blankj 已提交
109
                    ToastUtils.showLongToast("please add demo1 first!");
B
Blankj 已提交
110 111 112
                }
                break;
            case R.id.btn_replace:
B
Blankj 已提交
113
                ((FragmentActivity) getActivity()).rootFragment = FragmentUtils.replaceFragment(this, Demo3Fragment.newInstance(), false);
B
Blankj 已提交
114 115 116
                break;
        }
    }
B
Blankj 已提交
117 118 119 120 121 122

    @Override
    public boolean onBackClick() {
        FragmentUtils.popToFragment(getFragmentManager(), Demo1Fragment.class, true);
        return false;
    }
B
Blankj 已提交
123
}