package com.hpw.myapp.ui.zhihu.fragment;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import com.hpw.mvpframe.base.CoreBaseActivity;
import com.hpw.mvpframe.base.CoreBaseFragment;
import com.hpw.mvpframe.utils.SpUtil;
import com.hpw.mvpframe.utils.helper.FragmentAdapter;
import com.hpw.myapp.Constants;
import com.hpw.myapp.R;
import com.hpw.myapp.ui.zhihu.contract.ZhihuContract;
import com.hpw.myapp.ui.zhihu.fragment.child.DailyFragment;
import com.hpw.myapp.ui.zhihu.fragment.child.QuickFragment;
import com.hpw.myapp.ui.zhihu.fragment.child.SectionFragment;
import com.hpw.myapp.ui.zhihu.fragment.child.WechatFragment;
import com.hpw.myapp.ui.zhihu.model.ZhihuMainModel;
import com.hpw.myapp.ui.zhihu.presenter.ZhihuMainPresenter;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
/**
* Created by hpw on 16/10/31.
*/
public class ZhihuMainFragment extends CoreBaseFragment<ZhihuMainPresenter, ZhihuMainModel> implements ZhihuContract.ZhihuMainView, Toolbar.OnMenuItemClickListener {
protected OnFragmentOpenDrawerListener mOpenDraweListener;
List<Fragment> fragments = new ArrayList<>();
@BindView(R.id.tabs)
TabLayout tabs;
@BindView(R.id.viewpager)
ViewPager viewpager;
@BindView(R.id.toolbar)
Toolbar toolbar;
@BindView(R.id.fab)
FloatingActionButton fab;
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnFragmentOpenDrawerListener) {
mOpenDraweListener = (OnFragmentOpenDrawerListener) context;
}
}
@Override
public void onDetach() {
super.onDetach();
mOpenDraweListener = null;
}
@Override
public boolean onMenuItemClick(MenuItem item) {
int id = item.getItemId();
if (id == R.id.day) {
SpUtil.setNightModel(mContext, false);
((CoreBaseActivity) getActivity()).reload();
return true;
} else if (id == R.id.night) {
SpUtil.setNightModel(mContext, true);
((CoreBaseActivity) getActivity()).reload();
return true;
}
return false;
}
public interface OnFragmentOpenDrawerListener {
void onOpenDrawer();
}
public static ZhihuMainFragment newInstance(int position) {
ZhihuMainFragment fragment = new ZhihuMainFragment();
Bundle bundle = new Bundle();
bundle.putInt(Constants.ARG_POSITION, position);
fragment.setArguments(bundle);
return fragment;
}
@Override
public int getLayoutId() {
return R.layout.app_bar_main;
}
@Override
public void initUI(View view, @Nullable Bundle savedInstanceState) {
toolbar.setTitle("首页");
toolbar.setNavigationIcon(R.drawable.ic_menu_white_24dp);
toolbar.setNavigationOnClickListener(v -> {
if (mOpenDraweListener != null) {
mOpenDraweListener.onOpenDrawer();
}
});
fab.setOnClickListener(v -> Snackbar.make(v, "Snackbar comes out", Snackbar.LENGTH_LONG).setAction("action", vi -> {
showToast("ZhihuMainFragment");
}));
toolbar.inflateMenu(R.menu.fragment_main_menu);
toolbar.setOnMenuItemClickListener(this);
}
@Override
public void showTabList(String[] mTabs) {
//TabLayout配合ViewPager有时会出现不显示Tab文字的Bug,需要按如下顺序
for (int i = 0; i < mTabs.length; i++) {
tabs.addTab(tabs.newTab().setText(mTabs[i]));
switch (i) {
case 0:
fragments.add(new DailyFragment());
break;
case 1:
fragments.add(new SectionFragment());
break;
case 2:
fragments.add(new WechatFragment());
break;
default:
fragments.add(new QuickFragment());
break;
}
}
int position = getArguments().getInt(Constants.ARG_POSITION, 1);
viewpager.setAdapter(new FragmentAdapter(getChildFragmentManager(), fragments));
viewpager.setCurrentItem(position);//要设置到viewpager.setAdapter后才起作用
tabs.setupWithViewPager(viewpager);
tabs.setVerticalScrollbarPosition(position);
for (int i = 0; i < mTabs.length; i++) {
tabs.getTabAt(i).setText(mTabs[i]);
}
}
@Override
public void showError(String msg) {
}
}