Skip to content

Commit 8c9af2a

Browse files
committed
update load Fragment method,fix issue #4
1 parent b89aa14 commit 8c9af2a

File tree

10 files changed

+132
-11
lines changed

10 files changed

+132
-11
lines changed

app/src/main/java/mao/com/mao_wanandroid_client/presenter/main/KnowledgeHierarchyPresenter.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,11 @@ public void getKnowledgeHierarchyData() {
4141
.subscribe(new BaseObserver<List<KnowledgeHierarchyData>>() {
4242
@Override
4343
public void onSuccess(List<KnowledgeHierarchyData> result) {
44-
mView.showKnowledgeHierarchyData(result);
44+
if(result!=null){
45+
mView.showKnowledgeHierarchyData(result);
46+
}else {
47+
mView.showError();
48+
}
4549
}
4650

4751
@Override

app/src/main/java/mao/com/mao_wanandroid_client/utils/NavHelper.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,17 @@ public class NavHelper<T> {
1818

1919
private final SparseArray<Tab<T>> tabs = new SparseArray<Tab<T>>();
2020

21+
private final SparseArray<Fragment> tabFragments = new SparseArray<Fragment>();
22+
2123
private final Context mContext;
2224
private final int containerId;
2325
private final FragmentManager fragmentManager;
2426
private final OnTabChangeListener<T> mListener;
2527

2628
private Tab<T> currentTab;
2729

30+
private Fragment currentFragment;
31+
2832
public NavHelper(Context mContext, int containerId, FragmentManager fragmentManager, OnTabChangeListener<T> mListener) {
2933
this.mContext = mContext;
3034
this.containerId = containerId;
@@ -43,6 +47,17 @@ public NavHelper<T> add(int menuId, Tab<T> tab) {
4347
tabs.put(menuId, tab);
4448
return this;
4549
}
50+
/**
51+
* 添加 fragment ab
52+
*
53+
* @param menuId
54+
* @param fragment
55+
* @return
56+
*/
57+
public NavHelper<T> add(int menuId, Fragment fragment) {
58+
tabFragments.put(menuId, fragment);
59+
return this;
60+
}
4661

4762
/**
4863
* 获取当前Tab
@@ -53,6 +68,23 @@ public Tab<T> getCurrentTab() {
5368
return currentTab;
5469
}
5570

71+
private int lastIndexId = R.id.tab_main;
72+
73+
public boolean performClickMenuFragment(int menuId){
74+
FragmentTransaction ft = fragmentManager.beginTransaction();
75+
Fragment currentFragment = tabFragments.get(menuId);
76+
Fragment lastFragment = tabFragments.get(lastIndexId);
77+
lastIndexId = menuId;
78+
ft.hide(lastFragment);
79+
if (!currentFragment.isAdded()) {
80+
fragmentManager.beginTransaction().remove(currentFragment).commit();
81+
ft.add(containerId, currentFragment);
82+
}
83+
ft.show(currentFragment);
84+
ft.commitAllowingStateLoss();
85+
return true;
86+
}
87+
5688
/**
5789
* 执行点击菜单的操作
5890
* 如果点击了 nav_home 并且当前显示的是首页模块 则不切换

app/src/main/java/mao/com/mao_wanandroid_client/view/drawer/fragment/CollectionFragment.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package mao.com.mao_wanandroid_client.view.drawer.fragment;
22

3+
import android.annotation.SuppressLint;
34
import android.os.Bundle;
45
import android.support.constraint.ConstraintLayout;
56
import android.support.design.widget.FloatingActionButton;
@@ -186,13 +187,16 @@ public void showCancelCollectArticleSuccess(int position, String msg) {
186187
}
187188

188189
//是否显示空白添加新数据
190+
@SuppressLint("RestrictedApi")
189191
private void showCollectionDataChange() {
190192
List<CollectData> data = mAdapter.getData();
191193
if(data.size() == 0){
192194
mClEmpty.setVisibility(View.VISIBLE);
195+
mFabAdd.setVisibility(View.GONE);
193196
mSmartRefreshLayout.setVisibility(View.GONE);
194197
}else {
195198
mClEmpty.setVisibility(View.GONE);
199+
mFabAdd.setVisibility(View.VISIBLE);
196200
mSmartRefreshLayout.setVisibility(View.VISIBLE);
197201
}
198202
}

app/src/main/java/mao/com/mao_wanandroid_client/view/drawer/fragment/CollectionPageFragment.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package mao.com.mao_wanandroid_client.view.drawer.fragment;
22

3+
import android.os.Bundle;
34
import android.support.design.widget.TabLayout;
45
import android.support.v4.app.Fragment;
56
import android.support.v4.view.ViewPager;
@@ -31,6 +32,16 @@ public class CollectionPageFragment extends BaseFragment<CollectionPagePresenter
3132
List<String> mTitle;
3233
List<Fragment> mFragments;
3334

35+
36+
public static CollectionPageFragment newInstance() {
37+
38+
Bundle args = new Bundle();
39+
40+
CollectionPageFragment fragment = new CollectionPageFragment();
41+
fragment.setArguments(args);
42+
return fragment;
43+
}
44+
3445
@Override
3546
protected void initEventAndData() {
3647
super.initEventAndData();

app/src/main/java/mao/com/mao_wanandroid_client/view/drawer/fragment/CollectionWebFragment.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package mao.com.mao_wanandroid_client.view.drawer.fragment;
22

3+
import android.annotation.SuppressLint;
34
import android.os.Bundle;
45
import android.support.constraint.ConstraintLayout;
56
import android.support.design.widget.FloatingActionButton;
@@ -190,13 +191,16 @@ public void showDeleteCollectWebSuccess(int position, String msg) {
190191
Toast.makeText(getActivity(),msg,Toast.LENGTH_SHORT).show();
191192
}
192193
//是否显示空白添加新数据
194+
@SuppressLint("RestrictedApi")
193195
private void showCollectionDataChange() {
194196
List<WebBookMark> data = mAdapter.getData();
195197
if(data.size() == 0){
196198
mClEmpty.setVisibility(View.VISIBLE);
199+
mFabAdd.setVisibility(View.GONE);
197200
mSmartRefreshLayout.setVisibility(View.GONE);
198201
}else {
199202
mClEmpty.setVisibility(View.GONE);
203+
mFabAdd.setVisibility(View.VISIBLE);
200204
mSmartRefreshLayout.setVisibility(View.VISIBLE);
201205
}
202206
}

app/src/main/java/mao/com/mao_wanandroid_client/view/main/MainActivity.java

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,12 @@ protected void initToolbar() {
106106
pageTitle.setText(getString(R.string.page_home));
107107
//沉浸式状态栏
108108
StatusBarUtil.setColorNoTranslucentForDrawerLayout(this,drawer,ContextCompat.getColor(this,R.color.colorPrimary));
109+
110+
}
111+
112+
@Override
113+
protected void onViewCreated() {
114+
super.onViewCreated();
109115
initFragment();
110116
initView();
111117
}
@@ -116,14 +122,22 @@ private void initFragment() {
116122
loadRootFragment(R.id.page_fragment_container, HomePageFragment.newInstance());
117123
//loadMultipleRootFragment();
118124
}*/
119-
mNavHelper =new NavHelper<String>(this,R.id.page_fragment_container,getSupportFragmentManager(),this)
125+
/*mNavHelper =new NavHelper<String>(this,R.id.page_fragment_container,getSupportFragmentManager(),this)
120126
.add(R.id.tab_main,new NavHelper.Tab<String>(HomePageFragment.class,getString(R.string.page_home),Constants.TAG_HOME))
121127
.add(R.id.nav_home,new NavHelper.Tab<String>(HomePageFragment.class,getString(R.string.page_home),Constants.TAG_HOME))
122128
.add(R.id.tab_knowledge_hierarchy,new NavHelper.Tab<String>(KnowledgeHierarchyPageFragment.class,getString(R.string.knowledge_hierarchy),Constants.TAG_KNOWLEGER))
123129
.add(R.id.tab_official_accounts,new NavHelper.Tab<String>(OfficialAccountsPageFragment.class,getString(R.string.official_accounts),Constants.TAG_OFFICIAL))
124130
.add(R.id.tab_navigation,new NavHelper.Tab<String>(NavigationFragment.class,getString(R.string.navigation),Constants.TAG_NAVIGATION))
125131
.add(R.id.tab_project,new NavHelper.Tab<String>(ProjectFragment.class,getString(R.string.project),Constants.TAG_PROJECT))
126-
.add(R.id.collect_page,new NavHelper.Tab<String>(CollectionPageFragment.class,getString(R.string.nav_collect),Constants.TAG_COLLECTION));
132+
.add(R.id.collect_page,new NavHelper.Tab<String>(CollectionPageFragment.class,getString(R.string.nav_collect),Constants.TAG_COLLECTION));*/
133+
mNavHelper =new NavHelper<String>(this,R.id.page_fragment_container,getSupportFragmentManager(),this)
134+
.add(R.id.tab_main,HomePageFragment.newInstance())
135+
.add(R.id.nav_home,HomePageFragment.newInstance())
136+
.add(R.id.tab_knowledge_hierarchy,KnowledgeHierarchyPageFragment.newInstance())
137+
.add(R.id.tab_official_accounts,OfficialAccountsPageFragment.newInstance())
138+
.add(R.id.tab_navigation,NavigationFragment.newInstance())
139+
.add(R.id.tab_project,ProjectFragment.newInstance())
140+
.add(R.id.collect_page,CollectionPageFragment.newInstance());
127141
}
128142

129143
private void initView() {
@@ -230,17 +244,25 @@ public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
230244
}*/
231245
//DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
232246
//点击之后关闭DrawerLayout
233-
if(R.id.common_website != id ){
234-
//如果是 常用网站则不改变选中状态
247+
drawer.closeDrawer(GravityCompat.START);
248+
if(R.id.common_website == id || R.id.nav_settings ==id || R.id.nav_todo ==id){
249+
//如果是 常用网站 todo 则不改变选中状态
235250
//navigationView 选中
251+
return false;
252+
}else {
236253
navigationView.setCheckedItem(id);
254+
return mNavHelper.performClickMenuFragment(id);
237255
}
238-
/*if(R.id.nav_settings == id){
239-
//如果是设置 让其选中首页状态
240-
navigationView.setCheckedItem(R.id.nav_home);
241-
}*/
242-
drawer.closeDrawer(GravityCompat.START);
243-
return mNavHelper.performClickMenu(id);
256+
}
257+
258+
@Override
259+
public boolean onOptionsItemSelected(MenuItem item) {
260+
switch (item.getItemId()) {
261+
case android.R.id.home:
262+
drawer.openDrawer(GravityCompat.START);
263+
break;
264+
}
265+
return super.onOptionsItemSelected(item);
244266
}
245267

246268
/**

app/src/main/java/mao/com/mao_wanandroid_client/view/main/fragment/KnowledgeHierarchyPageFragment.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package mao.com.mao_wanandroid_client.view.main.fragment;
22

3+
import android.os.Bundle;
34
import android.support.annotation.NonNull;
45
import android.support.v7.widget.RecyclerView;
56
import android.support.v7.widget.StaggeredGridLayoutManager;
@@ -41,6 +42,16 @@ public class KnowledgeHierarchyPageFragment extends RootBaseFragment<KnowledgeHi
4142
KnowledgeHierarchyAdapter mAdapter;
4243
List<KnowledgeHierarchyData> mKnowledgeHierarchyData;
4344

45+
public static KnowledgeHierarchyPageFragment newInstance() {
46+
47+
Bundle args = new Bundle();
48+
49+
KnowledgeHierarchyPageFragment fragment = new KnowledgeHierarchyPageFragment();
50+
fragment.setArguments(args);
51+
return fragment;
52+
}
53+
54+
4455
@Override
4556
protected void initView() {
4657
mRecyclerView.setHasFixedSize(true);

app/src/main/java/mao/com/mao_wanandroid_client/view/main/fragment/NavigationFragment.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package mao.com.mao_wanandroid_client.view.main.fragment;
22

3+
import android.os.Bundle;
34
import android.support.annotation.NonNull;
45
import android.support.v4.content.ContextCompat;
56
import android.support.v7.widget.LinearLayoutManager;
@@ -63,6 +64,16 @@ public class NavigationFragment extends RootBaseFragment<NavigationPresenter> im
6364
//VerticalTabLayout 点击获取位置让 RecycleView滑动到相应位置
6465
private int scrollToPosition;
6566

67+
68+
public static NavigationFragment newInstance() {
69+
70+
Bundle args = new Bundle();
71+
72+
NavigationFragment fragment = new NavigationFragment();
73+
fragment.setArguments(args);
74+
return fragment;
75+
}
76+
6677
@Override
6778
protected int getLayoutId() {
6879
return R.layout.navigation_fragment_layout;

app/src/main/java/mao/com/mao_wanandroid_client/view/main/fragment/OfficialAccountsPageFragment.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package mao.com.mao_wanandroid_client.view.main.fragment;
22

3+
import android.os.Bundle;
34
import android.support.v7.widget.LinearLayoutManager;
45
import android.support.v7.widget.RecyclerView;
56
import android.view.View;
@@ -37,6 +38,16 @@ public class OfficialAccountsPageFragment extends RootBaseFragment<OfficialAccou
3738

3839
List<KnowledgeHierarchyData> mOfficialAccountsListData;
3940

41+
42+
public static OfficialAccountsPageFragment newInstance() {
43+
44+
Bundle args = new Bundle();
45+
46+
OfficialAccountsPageFragment fragment = new OfficialAccountsPageFragment();
47+
fragment.setArguments(args);
48+
return fragment;
49+
}
50+
4051
@Override
4152
protected void initView() {
4253
mRecyclerView.setHasFixedSize(true);

app/src/main/java/mao/com/mao_wanandroid_client/view/main/fragment/ProjectFragment.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package mao.com.mao_wanandroid_client.view.main.fragment;
22

3+
import android.os.Bundle;
34
import android.support.constraint.ConstraintLayout;
45
import android.support.design.widget.TabLayout;
56
import android.support.v4.app.Fragment;
@@ -38,6 +39,16 @@ public class ProjectFragment extends BaseFragment<ProjectPresenter> implements P
3839
List<ProjectClassifyData> mProjectClassifyDataList;
3940
List<Fragment> mProjectFragmentsList;
4041
List<String> mTitle;
42+
43+
public static ProjectFragment newInstance() {
44+
45+
Bundle args = new Bundle();
46+
47+
ProjectFragment fragment = new ProjectFragment();
48+
fragment.setArguments(args);
49+
return fragment;
50+
}
51+
4152
@Override
4253
protected void initView() {
4354
mProjectClassifyDataList = new ArrayList<>();

0 commit comments

Comments
 (0)