package com.zenglb.framework.fragment.mainfragment;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.dtr.settingview.lib.SettingView;
import com.dtr.settingview.lib.entity.SettingData;
import com.dtr.settingview.lib.entity.SettingViewItemData;
import com.dtr.settingview.lib.item.BasicItemViewH;
import com.dtr.settingview.lib.item.SwitchItemView;
import com.zenglb.baselib.base.BaseActivity;
import com.zenglb.baselib.base.BaseFragment;
import com.zenglb.framework.R;
import com.zenglb.framework.activity.access.LoginActivity;
import java.util.ArrayList;
import java.util.List;
/**
* 懒加载的实验Fragment,将会作为github me Profile 的Fragment 复用
* <p>
* <p>
* https://github.com/SpikeKing/TestCoordinatorLayout :个人简介使用这种布局样式,交互样式非常的好
*
* @author anylife.zlb@gmail.com
*/
public class MeProfileFragment extends BaseFragment {
private String TAG = MeProfileFragment.class.getSimpleName();
private TextView errorTipsText; //错误提示的textView
private TextView logout;
private SettingView mSettingView1 = null;
private SettingData mItemData = null;
private SettingViewItemData mItemViewData = null;
private List<SettingViewItemData> mListData = new ArrayList<SettingViewItemData>();
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
public MeProfileFragment() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @return A new instance of fragment BlankFragment.
*/
public static MeProfileFragment newInstance(String param1, String param2) {
MeProfileFragment fragment = new MeProfileFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
/**
* 使用这种方式来生成的Fragment 在内存不足的时候重启后会
* 一定会在任何情况都能恢复到离开前的页面,并且保证数据的完整性。
*
* @param savedInstanceState
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e(TAG, mParam1 + " onCreate !!!!! " + savedInstanceState);
if (getArguments() != null) { //在 static BlankFragment newInstance 中实例化的
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
/**
* 当视图可见的时候就会被调用,当然在onCreateView 也会调用一次,
*/
@Override
protected void lazyLoadData(boolean isForceLoad) {
if (isViewsInit && visibleTime < 1) {
Log.e(TAG, "视图已经初始化完毕了,虽然不去加载网络数据,但是可以加载一下本地持久化的缓存数据啊!");
}
if (!isViewsInit || visibleTime < 1) { //假如views 没有初始化或者Fragment不可见,那就不要尝试加载数据
return;
} else {
if (isForceLoad) {
Log.e(TAG, "前面的支付页面支付9.9,那么这里显示的剩余金额必然变动了,敏感数据,要实时刷新");
}
if (visibleTime == 1) { //这里也不是每次可见的时候都能刷新,只有第一次可见的时候或者数据加载从来没有成功 才调用刷新
disposeHttpResult();
Toast.makeText(mActivity, "第一次可见", Toast.LENGTH_SHORT).show();
}
}
}
/**
* @param inflater
* @param container
* @param savedInstanceState
* @return
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.e(TAG, mParam1 + " onCreateView " + savedInstanceState);
View rootView = inflater.inflate(R.layout.fragment_me_profile, container, false);
initViews(rootView);
lazyLoadData(true);
return rootView;
}
/**
* 初始化所有的视图
*
* @param rootView
*/
protected void initViews(View rootView) {
LinearLayout linearLayout=(LinearLayout) rootView.findViewById(R.id.me_layout);
linearLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
BaseActivity baseActivity = (BaseActivity ) getActivity();
baseActivity.goWebView("file:///android_asset/index.html");
}
});
logout = (TextView) rootView.findViewById(R.id.logout);
logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
logout();
}
});
mSettingView1 = (SettingView) rootView.findViewById(R.id.ios_style_setting_view_01);
mSettingView1.setOnSettingViewItemClickListener(new SettingView.onSettingViewItemClickListener() {
@Override
public void onItemClick(int index) {
// TODO Auto-generated method stub
//// startActivity(new Intent(mActivity, SetHeadImgActivity.class));
// startActivity(new Intent(mActivity, WebActivity.class));
Toast.makeText(mActivity, "第" + index + "项被点击", Toast.LENGTH_SHORT).show();
if (index == 4) {
mSettingView1.modifySubTitle("中国联通", index);
} else if (index == 2) {
mSettingView1.modifySubTitle("关闭", index);
}
}
});
mSettingView1.setOnSettingViewItemSwitchListener(new SettingView.onSettingViewItemSwitchListener() {
@Override
public void onSwitchChanged(int index, boolean isChecked) {
// TODO Auto-generated method stub
if (isChecked) {
Toast.makeText(mActivity, "第" + index + "项打开", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(mActivity, "第" + index + "项关闭", Toast.LENGTH_SHORT).show();
}
}
});
//======================= FBI WARMMING ! 这样子是很差劲的,说明没有写好=================
super.initViews(rootView); //一定放在最后面来调用
}
/**
* 在这里实现Fragment数据的缓加载.
*
* @param isVisibleToUser
*/
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
Log.e(TAG, "setUserVisibleHint called,------isVisibleToUser:" + isVisibleToUser);
}
private void disposeHttpResult() {
/* ==========================SettingView1========================== */
mSettingView1.removeAllViews();
mListData.clear();
mItemViewData = new SettingViewItemData();
mItemData = new SettingData();
mItemData.setTitle("飞行模式");
mItemViewData.setData(mItemData);
mItemViewData.setItemView(new SwitchItemView(mActivity));
mListData.add(mItemViewData);
mItemViewData = new SettingViewItemData();
mItemData = new SettingData();
mItemData.setTitle("飞行模式2");
mItemViewData.setData(mItemData);
mItemViewData.setItemView(new SwitchItemView(mActivity));
mListData.add(mItemViewData);
mItemViewData = new SettingViewItemData();
mItemData = new SettingData();
mItemData.setTitle("飞行模式3");
mItemViewData.setData(mItemData);
mItemViewData.setItemView(new SwitchItemView(mActivity));
mListData.add(mItemViewData);
mItemViewData = new SettingViewItemData();
mItemData = new SettingData();
mItemData.setTitle("飞行模式");
mItemViewData.setData(mItemData);
mItemViewData.setItemView(new SwitchItemView(mActivity));
mListData.add(mItemViewData);
mItemViewData = new SettingViewItemData();
mItemData = new SettingData();
mItemData.setTitle("运营商");
mItemData.setSubTitle("中国移动");
// mItemData.setDrawable(getResources().getDrawable(R.drawable.main_footer_discovery_selected));
mItemViewData.setData(mItemData);
mItemViewData.setItemView(new BasicItemViewH(mActivity));
mListData.add(mItemViewData);
mItemViewData = new SettingViewItemData();
mItemData = new SettingData();
mItemData.setTitle("飞行模式3");
mItemViewData.setData(mItemData);
mItemViewData.setItemView(new SwitchItemView(mActivity));
mListData.add(mItemViewData);
mSettingView1.setAdapter(mListData);
/* ==========================SettingView1========================== */
}
/**
*
*/
public void logout() {
Intent intent = new Intent();
intent.setClass(mActivity, LoginActivity.class);
mActivity.startActivity(intent);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
}
/**
* This interface must be implemented by activities that contain this
* fragment to allow an interaction in this fragment to be communicated
* to the activity and potentially other fragments contained in that
* activity.
* <p/>
* See the Android Training lesson <a href=
* "http://developer.android.com/training/basics/fragments/communicating.html"
* >Communicating with Other Fragments</a> for more information.
*/
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
void onFragmentInteraction(Uri uri);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onStop() {
super.onStop();
}
@Override
public void onDestroy() {
super.onDestroy();
Log.e(TAG, mParam1 + " onDestroy");
}
@Override
public void onDestroyView() {
super.onDestroyView();
Log.e(TAG, mParam1 + " onDestroyView");
}
@Override
public void onDetach() {
super.onDetach();
Log.e(TAG, mParam1 + " onDetach");
}
}