diff --git a/app/src/main/java/com/gh/base/fragment/BaseLazyTabFragment.kt b/app/src/main/java/com/gh/base/fragment/BaseLazyTabFragment.kt index 85f3e40cca..69e86c001d 100644 --- a/app/src/main/java/com/gh/base/fragment/BaseLazyTabFragment.kt +++ b/app/src/main/java/com/gh/base/fragment/BaseLazyTabFragment.kt @@ -62,16 +62,16 @@ abstract class BaseLazyTabFragment : BaseLazyFragment(), ViewPager.OnPageChangeL override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + if (arguments != null) mCheckedIndex = requireArguments().getInt(PAGE_INDEX, 0) - mFragmentsList = ArrayList() - initFragmentList(mFragmentsList) - mTabTitleList = ArrayList() - initTabTitleList(mTabTitleList) } override fun onFragmentFirstVisible() { super.onFragmentFirstVisible() + initFragmentList(mFragmentsList) + initTabTitleList(mTabTitleList) + mViewPager.offscreenPageLimit = mFragmentsList.size mViewPager.addOnPageChangeListener(this) mViewPager.adapter = FragmentAdapter(childFragmentManager, mFragmentsList, mTabTitleList) diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 0f2116a0f3..225ebbd2e8 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -158,6 +158,7 @@ public class MainActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setStatusBarColor(Color.TRANSPARENT); mMainWrapperFragment = new MainWrapperFragment(); if (savedInstanceState != null) { @@ -167,7 +168,6 @@ public class MainActivity extends BaseActivity { } replaceFragment(mMainWrapperFragment); - setStatusBarColor(Color.TRANSPARENT); mSp = PreferenceManager.getDefaultSharedPreferences(this); isNewFirstLaunch = mSp.getBoolean("isNewFirstLaunchV" + PackageUtils.getVersionName(), true); diff --git a/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.java b/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.java index 67be70f45d..780341316d 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.java +++ b/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.java @@ -489,7 +489,6 @@ public class MainWrapperFragment extends BaseFragment_ViewPager_Checkable implem } } - // 控制 我的光环消息未读红点 @Subscribe(threadMode = ThreadMode.MAIN) public void onEventMainThread(EBReuse reuse) { if ("Refresh".equals(reuse.getType())) { diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageUnreadRepository.kt b/app/src/main/java/com/gh/gamecenter/message/MessageUnreadRepository.kt index 83aad0f3ef..9986ba17e0 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageUnreadRepository.kt +++ b/app/src/main/java/com/gh/gamecenter/message/MessageUnreadRepository.kt @@ -7,7 +7,6 @@ import com.gh.common.constant.Constants import com.gh.common.util.CheckLoginUtils import com.gh.common.util.SPUtils import com.gh.common.util.createRequestBody -import com.gh.common.util.createRequestBodyAny import com.gh.gamecenter.db.GameTrendsDao import com.gh.gamecenter.db.info.GameTrendsInfo import com.gh.gamecenter.entity.AddonsUnreadEntity diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java index f94d7638a1..5d26d9f032 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java @@ -57,7 +57,6 @@ import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; import com.gh.gamecenter.room.AppDatabase; import com.gh.gamecenter.subject.SubjectActivity; -import com.gh.gamecenter.user.ApiResponse; import com.gh.gamecenter.user.UserViewModel; import com.google.android.material.appbar.AppBarLayout; import com.halo.assistant.HaloApp; @@ -78,7 +77,6 @@ import java.util.concurrent.TimeUnit; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -95,8 +93,7 @@ import retrofit2.HttpException; import static com.gh.gamecenter.fragment.MainWrapperFragment.INDEX_PERSONAL; -// TODO 转成 kotlin,处理红点相关逻辑,优化列表刷新方式 -public class PersonalFragment extends BaseLazyFragment implements Observer> { +public class PersonalFragment extends BaseLazyFragment { @BindView(R.id.list_refresh) SwipeRefreshLayout mListRefresh; @@ -137,7 +134,6 @@ public class PersonalFragment extends BaseLazyFragment implements Observer { + UserInfoEntity notifyUserInfo; + if (userInfoEntity != null) { + notifyUserInfo = userInfoEntity.getData(); + } else { + notifyUserInfo = null; + } + + if (notifyUserInfo != null && mUserInfoEntity == null) { // 单个用户,首次触发 + EventBus.getDefault().post(new EBConcernChanged()); + + LoginTokenEntity loginTokenEntity = UserManager.getInstance().getLoginTokenEntity(); + if (mIsLogging && loginTokenEntity != null) { + String loginType = loginTokenEntity.getLoginType(); + LogUtils.login("success", loginType, getLoginEntranceByType(loginType)); + mIsLogging = false; + } + } + + mUserInfoEntity = notifyUserInfo; + if (notifyUserInfo == null) { + mUnreadViewModel.clean(); + EventBus.getDefault().post(new EBConcernChanged()); + } + }); + + mPersonalViewModel.getHaloAddData().observe(this, datas -> { + if (!datas.isEmpty()) { + MessageUnreadRepository.INSTANCE.loadMessageUnreadTotal(); + } + }); + + mUnreadViewModel.getLiveData().observe(this + , messageUnread -> { + if (messageUnread != null && messageUnread.getTotal() > 0) { + // 第一次开启应用时检查消息中心看有没有未读消息确定需不需要弹 Notifier 通知 + showNotifier(messageUnread); + } + }); + } + + private void observeUIRelatedChanges() { + mUserViewModel.getLoginObsUserinfo().observe(this, userInfoEntity -> { + if (userInfoEntity != null && userInfoEntity.getData() == null) { + changeLoginState(false); + } else { + changeLoginState(true); + } + }); mUserHomeViewModel.getBadges().observe(this, badgeEntities -> { if (badgeEntities.isEmpty()) { @@ -263,10 +310,8 @@ public class PersonalFragment extends BaseLazyFragment implements Observer { @@ -276,10 +321,6 @@ public class PersonalFragment extends BaseLazyFragment implements Observer 0 ? View.VISIBLE : View.GONE); BindingAdapters.setMessageUnread(mLoginMessageHint, count); - - // 第一次开启应用时检查消息中心看有没有未读消息确定需不需要弹 Notifier 通知 - showNotifier(messageUnread); - EventBus.getDefault().post(new EBReuse(MESSAGE_UNREAD_TAG)); } else { mLoginMessageHint.setVisibility(View.GONE); mPersonalHome.setText("个人主页"); @@ -466,7 +507,6 @@ public class PersonalFragment extends BaseLazyFragment implements Observer userInfoEntity) { - UserInfoEntity notifyUserInfo; - if (userInfoEntity != null) { - notifyUserInfo = userInfoEntity.getData(); - } else { - notifyUserInfo = null; - } - - if (notifyUserInfo != null && mUserInfoEntity == null) { // 单个用户,首次触发 - EventBus.getDefault().post(new EBConcernChanged()); - - LoginTokenEntity loginTokenEntity = UserManager.getInstance().getLoginTokenEntity(); - if (mIsLogging && loginTokenEntity != null) { - String loginType = loginTokenEntity.getLoginType(); - LogUtils.login("success", loginType, getLoginEntranceByType(loginType)); - mIsLogging = false; - } - } - - mUserInfoEntity = notifyUserInfo; - if (notifyUserInfo == null) { - mUnreadViewModel.clean(); - changeLoginState(false); - EventBus.getDefault().post(new EBConcernChanged()); - } else { - changeLoginState(true); - } - - } - private static String getLoginEntranceByType(String loginTag) { String entrance = ""; switch (loginTag) { diff --git a/app/src/main/java/com/gh/gamecenter/qa/recommends/AskQuestionsRecommendsFragment.java b/app/src/main/java/com/gh/gamecenter/qa/recommends/AskQuestionsRecommendsFragment.java index 2c144b8dee..7c3bbaddd8 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/recommends/AskQuestionsRecommendsFragment.java +++ b/app/src/main/java/com/gh/gamecenter/qa/recommends/AskQuestionsRecommendsFragment.java @@ -5,13 +5,9 @@ import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; +import android.text.TextUtils; import android.view.View; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.RecyclerView; - import com.gh.common.util.CheckLoginUtils; import com.gh.common.util.EntranceUtils; import com.gh.common.util.LogUtils; @@ -26,6 +22,7 @@ import com.gh.gamecenter.eventbus.EBReuse; import com.gh.gamecenter.eventbus.EBTypeChange; import com.gh.gamecenter.eventbus.EBUserFollow; import com.gh.gamecenter.fragment.MainWrapperFragment; +import com.gh.gamecenter.manager.UserManager; import com.gh.gamecenter.qa.CommunityFragment; import com.gh.gamecenter.qa.entity.AnswerEntity; import com.gh.gamecenter.qa.questions.edit.QuestionEditActivity; @@ -34,6 +31,10 @@ import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import butterknife.OnClick; @@ -82,7 +83,10 @@ public class AskQuestionsRecommendsFragment extends ListFragment