zoukankan      html  css  js  c++  java
  • Fragment使用案例

    import android.R.string;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.HashMap;
    import java.util.Map;
    import android.app.Fragment;
    import android.app.ListFragment;
    import android.content.res.Resources;
    import android.app.PendingIntent.OnFinished;
    import android.database.DataSetObserver;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.View.OnCreateContextMenuListener;
    import android.view.ViewGroup;
    import android.view.animation.Animation;
    import android.view.animation.AnimationUtils;
    import android.view.animation.Animation.AnimationListener;
    import android.webkit.WebView.FindListener;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.LinearLayout;
    import android.widget.ArrayAdapter;
    import android.widget.ImageButton;
    import android.widget.ListAdapter;
    import android.widget.SimpleAdapter;
    import android.widget.ListView;
    import android.widget.Toast;
    import android.graphics.Color;
    
    public class MoreFragment extends Fragment {
        private Callbacks mCallbacks;
        private ListView mListView;
        private ImageButton mFragmentExit;
        private ImageButton mImageExit;
        private Resources mResources;
        private LinearLayout ly;
        private Animation mEnterAnimation;
        private Animation mExitAnimation;
    
        public interface Callbacks {
            public void onItemSelected(int resId);
    
            public void onButtonClick();
        }
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            mResources = getActivity().getResources();
            View view = inflater.inflate(R.layout.more_list, null);
            ly = (LinearLayout) view.findViewById(R.id.layout);
            mEnterAnimation = AnimationUtils.loadAnimation(getActivity(), R.anim.enter_anim);
            mExitAnimation = AnimationUtils.loadAnimation(getActivity(), R.anim.exit_anim);
            mExitAnimation.setAnimationListener(new AnimationListener() {
                @Override
                public void onAnimationStart(Animation arg0) {
                }
                @Override
                public void onAnimationRepeat(Animation arg0) {
                }
                @Override
                public void onAnimationEnd(Animation arg0) {
                    ((Callbacks) getActivity()).onButtonClick();
                }
            });
            ly.setAnimation(mEnterAnimation);
            mFragmentExit = (ImageButton) view.findViewById(R.id.fragmentexit);
            mFragmentExit.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View arg0) {
                    if (getActivity() instanceof Callbacks) {
                        ly.setAnimation(mExitAnimation);
                    }
                }
            });
            mImageExit = (ImageButton) view.findViewById(R.id.imageexit);
            mImageExit.setBackgroundColor(Color.TRANSPARENT);
            mImageExit.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View arg0) {
                    if (getActivity() instanceof Callbacks) {
                        ly.setAnimation(mExitAnimation);
                    }
                }
            });
            mListView = (ListView) view.findViewById(R.id.morelist);
            String[] arr = new String[3];
            if (getArguments().containsKey("first")) {
                arr[0] = mResources.getString(getArguments().getInt("first"));
            }
            if (getArguments().containsKey("second")) {
                arr[1] = mResources.getString(getArguments().getInt("second"));
            }
            if (getArguments().containsKey("third")) {
                arr[2] = mResources.getString(getArguments().getInt("third"));
            }
            List<Map<String, String>> listItems = new ArrayList<Map<String, String>>();
            for (int i = 0; i < arr.length; i++) {
                Map<String, String> listItem = new HashMap<String, String>();
                listItem.put("title", arr[i]);
                listItems.add(listItem);
            }
            SimpleAdapter mSimpleAdapter = new SimpleAdapter(getActivity(), listItems, R.layout.item_more_list, new String[] {"title"}, new int[] {R.id.frag_title});
            mListView.setAdapter(mSimpleAdapter);
            mListView.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                    if (getActivity() instanceof Callbacks) {
                        ly.setAnimation(mExitAnimation);
                        switch (arg2) {
                        case 0:
                            ((Callbacks) getActivity()).onItemSelected(getArguments().getInt("first"));
                            break;
                        case 1:
                            ((Callbacks) getActivity()).onItemSelected(getArguments().getInt("second"));
                            break;
                        case 2:
                            ((Callbacks) getActivity()).onItemSelected(getArguments().getInt("third"));
                            break;
                        default:
                            ((Callbacks) getActivity()).onItemSelected(-1);
                            break;
                        }
                    }
                }
            });
            return view;
        }
        @Override
        public void onDestroyView() {
            super.onDestroyView();
        }
    }

    别忘了Activity implements MoreFragment.Callbacks, ……{^_^};

    Activity中实现接口:

        public void onItemSelected(int resId) {
            switch (resId) {
            case 1 : 
     break; case 2 :
                
    break; case 3 : break; default: LogUtils.d(TAG, "invalid selected item"); break; } } public void onButtonClick(){ mFragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); mFragmentTransaction = mFragmentManager.beginTransaction(); mFragmentTransaction.remove(mMoreFragment).commit(); }

    启动Fragment:

                    MoreFragment mMoreFragment;
                    mMoreFragment = new MoreFragment(); Bundle arguments = new Bundle(); arguments.putInt("first", 1); arguments.putInt("second", 2); arguments.putInt("third", 3); mMoreFragment.setArguments(arguments); mFragmentTransaction = mFragmentManager.beginTransaction(); mFragmentTransaction.add(R.id.flt, mMoreFragment); mFragmentTransaction.addToBackStack(null); mFragmentTransaction.commit();

    关闭Fragment:

            mFragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
            mFragmentTransaction = mFragmentManager.beginTransaction();
            mFragmentTransaction.remove(mMoreFragment).commit();
  • 相关阅读:
    axb_2019_fmt32 盲打和格式化字符串
    ciscn_2019_final_3 需要避开当前free的chunk的下一个chunk不能超过arena的边界
    xdctf2015_pwn200
    valarray类
    Mysql 常用命令.
    如何处理IO
    等号两边自动添加括号
    Request JSON
    开机小脚本自动打开sublime text 和git-bash
    git 同步勾子
  • 原文地址:https://www.cnblogs.com/wjhblogs/p/4305431.html
Copyright © 2011-2022 走看看