fix: 修复返回主页fragment会重建
This commit is contained in:
@@ -17,8 +17,8 @@ android {
|
||||
minSdkVersion 23
|
||||
targetSdkVersion 29
|
||||
|
||||
versionCode 35
|
||||
versionName "1.3.4"
|
||||
versionCode 36
|
||||
versionName "1.3.5"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
|
||||
@@ -145,9 +145,21 @@ public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBi
|
||||
private List<TabBean> tabBeanLists = new ArrayList<>();
|
||||
private List<Fragment> fragments = new ArrayList<>();
|
||||
|
||||
private MineFragment mMineFragment;
|
||||
private AiFragment mAiFragment;
|
||||
private ChineseFragment mChineseFragment;
|
||||
private MathFragment mMathFragment;
|
||||
private EnglishFragment mEnglishFragment;
|
||||
private ComplexFragment mComplexFragment;
|
||||
private ReadFragment mReadFragment;
|
||||
private SztzFragment mSztzFragment;
|
||||
private AppFragment mAppFragment;
|
||||
|
||||
|
||||
private int defaultCurrent = 0;
|
||||
|
||||
private TabAdapter tabAdapter;
|
||||
private TabFragmentAdapter mTabFragmentAdapter;
|
||||
|
||||
private static final int REQUEST_CODE_POST_NOTIFICATIONS = 100;
|
||||
|
||||
@@ -192,6 +204,90 @@ public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBi
|
||||
mDeviceControlManager = new DeviceControlManager();
|
||||
mAdminName = new ComponentName(this, AoleDeviceAdminReceiver.class);
|
||||
|
||||
mViewDataBinding.tvTime.setText(DataUtil.formatDateHour());
|
||||
|
||||
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
|
||||
linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
|
||||
mViewDataBinding.rlTab.setLayoutManager(linearLayoutManager);
|
||||
|
||||
tabAdapter = new TabAdapter(tabBeanLists);
|
||||
tabAdapter.setData(tabBeanLists);
|
||||
tabAdapter.setOnItemClickListener(new TabAdapter.RadiaoOnItemClickListener() {
|
||||
@Override
|
||||
public void onSelectClick(int i) {
|
||||
tabAdapter.setChoosePosition(i);
|
||||
mViewDataBinding.subjectViewPager.setCurrentItem(i);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.rlTab.setAdapter(tabAdapter);
|
||||
|
||||
mTabFragmentAdapter = new TabFragmentAdapter(getSupportFragmentManager());
|
||||
mViewDataBinding.subjectViewPager.setAdapter(mTabFragmentAdapter);
|
||||
mViewDataBinding.subjectViewPager.setOffscreenPageLimit(12);
|
||||
mViewDataBinding.subjectViewPager.setScrollAnim(true);
|
||||
mViewDataBinding.subjectViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||
@Override
|
||||
public void onPageScrollStateChanged(int i) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrolled(int i, float f, int i2) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageSelected(int i) {
|
||||
tabAdapter.setChoosePosition(i);
|
||||
mViewDataBinding.rlTab.scrollToPosition(i);
|
||||
}
|
||||
});
|
||||
|
||||
mMineFragment = new MineFragment();
|
||||
mAiFragment = new AiFragment();
|
||||
mChineseFragment = new ChineseFragment();
|
||||
mMathFragment = new MathFragment();
|
||||
mEnglishFragment = new EnglishFragment();
|
||||
mComplexFragment = new ComplexFragment();
|
||||
mReadFragment = new ReadFragment();
|
||||
mSztzFragment = new SztzFragment();
|
||||
mAppFragment = new AppFragment();
|
||||
|
||||
Log.e(TAG, "initViews: add fragment");
|
||||
fragments.add(mMineFragment);
|
||||
fragments.add(mAiFragment);
|
||||
fragments.add(mChineseFragment);
|
||||
fragments.add(mMathFragment);
|
||||
fragments.add(mEnglishFragment);
|
||||
fragments.add(mComplexFragment);
|
||||
fragments.add(mReadFragment);
|
||||
// if ("小学".equals(Util.checkGrade(SPUtils.getGrade()))) {
|
||||
fragments.add(mSztzFragment);
|
||||
// }
|
||||
fragments.add(mAppFragment);
|
||||
Log.e(TAG, "initViews: fragments size = " + fragments.size());
|
||||
mTabFragmentAdapter.notifyDataSetChanged();
|
||||
|
||||
Log.e(TAG, "initViews: add tab bean");
|
||||
tabBeanLists.add(new TabBean("我的", R.drawable.icon_tab_wd, R.drawable.icon_tab_wd_pre));
|
||||
tabBeanLists.add(new TabBean("AI+学习", R.drawable.icon_tab_aixx, R.drawable.icon_tab_aixx_pre));
|
||||
tabBeanLists.add(new TabBean("语文", R.drawable.icon_tab_yw, R.drawable.icon_tab_yw_pre));
|
||||
tabBeanLists.add(new TabBean("数学", R.drawable.icon_tab_sx, R.drawable.icon_tab_sx_pre));
|
||||
tabBeanLists.add(new TabBean("英语", R.drawable.icon_tab_yy, R.drawable.icon_tab_yy_pre));
|
||||
tabBeanLists.add(new TabBean("其他学科", R.drawable.icon_tab_qtxx, R.drawable.icon_tab_qtxx_pre));
|
||||
tabBeanLists.add(new TabBean("读书", R.drawable.icon_tab_ds, R.drawable.icon_tab_ds_pre));
|
||||
// if ("小学".equals(Util.checkGrade(SPUtils.getGrade()))) {
|
||||
tabBeanLists.add(new TabBean("素养课", R.drawable.icon_tab_syk, R.drawable.icon_tab_syk_pre));
|
||||
// }
|
||||
tabBeanLists.add(new TabBean("应用", R.drawable.icon_tab_lsaq, R.drawable.icon_tab_lsaq_pre));
|
||||
|
||||
Log.e(TAG, "initViews: tabBeanLists size = " + tabBeanLists.size());
|
||||
|
||||
tabAdapter.notifyDataSetChanged();
|
||||
|
||||
tabAdapter.setChoosePosition(defaultCurrent);
|
||||
mViewDataBinding.subjectViewPager.setCurrentItem(defaultCurrent);
|
||||
|
||||
int agree = mMMKV.decodeInt("AgreePrivacyPolicy", 0);
|
||||
if (agree == 0) {
|
||||
showPolicyDialog();
|
||||
@@ -199,7 +295,6 @@ public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBi
|
||||
checkEula();
|
||||
}
|
||||
|
||||
|
||||
Log.e(TAG, "initView: getSerial = " + AdminManager.getInstance().getSerial());
|
||||
Log.e(TAG, "initView: getDeviceSN = " + AdminManager.getInstance().getSerial());
|
||||
Utils.getAndroiodScreenProperty(this);
|
||||
@@ -244,7 +339,6 @@ public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBi
|
||||
|
||||
// ComponentName componentName = new ComponentName(JxwPackageConfig.JXW_LAUNCHER_PACKAGE_NAME, JxwPackageConfig.JXW_LAUNCHER_CLASS_NAME);
|
||||
// startService(new Intent().setComponent(componentName));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -325,43 +419,7 @@ public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBi
|
||||
Log.e(TAG, "initViews: ");
|
||||
long time = System.currentTimeMillis();
|
||||
|
||||
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
|
||||
linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
|
||||
mViewDataBinding.rlTab.setLayoutManager(linearLayoutManager);
|
||||
|
||||
tabAdapter = new TabAdapter(tabBeanLists);
|
||||
tabAdapter.setOnItemClickListener(new TabAdapter.RadiaoOnItemClickListener() {
|
||||
@Override
|
||||
public void onSelectClick(int i) {
|
||||
tabAdapter.setChoosePosition(i);
|
||||
mViewDataBinding.subjectViewPager.setCurrentItem(i);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.rlTab.setAdapter(tabAdapter);
|
||||
|
||||
mViewDataBinding.subjectViewPager.setOffscreenPageLimit(12);
|
||||
mViewDataBinding.subjectViewPager.setScrollAnim(true);
|
||||
mViewDataBinding.subjectViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||
@Override
|
||||
public void onPageScrollStateChanged(int i) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrolled(int i, float f, int i2) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageSelected(int i) {
|
||||
tabAdapter.setChoosePosition(i);
|
||||
mViewDataBinding.rlTab.scrollToPosition(i);
|
||||
}
|
||||
});
|
||||
|
||||
initDatas();
|
||||
Log.e(TAG, "initViews: time = " + (System.currentTimeMillis() - time) + "ms");
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -747,7 +805,7 @@ public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBi
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onGkNoticeEvent(UpdateGradeEvent updateGradeEvent) {
|
||||
Log.e(TAG, "onGkNoticeEvent: ");
|
||||
initDatas();
|
||||
initViews();
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
@@ -771,46 +829,6 @@ public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBi
|
||||
|
||||
}
|
||||
|
||||
private void initDatas() {
|
||||
Log.e(TAG, "initDatas: ");
|
||||
long time = System.currentTimeMillis();
|
||||
mViewDataBinding.tvTime.setText(DataUtil.formatDateHour());
|
||||
|
||||
fragments.clear();
|
||||
tabBeanLists.clear();
|
||||
fragments.add(new MineFragment());
|
||||
fragments.add(new AiFragment());
|
||||
fragments.add(new ChineseFragment());
|
||||
fragments.add(new MathFragment());
|
||||
fragments.add(new EnglishFragment());
|
||||
fragments.add(new ComplexFragment());
|
||||
fragments.add(new ReadFragment());
|
||||
// if ("小学".equals(Util.checkGrade(SPUtils.getGrade()))) {
|
||||
fragments.add(new SztzFragment());
|
||||
// }
|
||||
fragments.add(new AppFragment());
|
||||
|
||||
tabBeanLists.add(new TabBean("我的", R.drawable.icon_tab_wd, R.drawable.icon_tab_wd_pre));
|
||||
tabBeanLists.add(new TabBean("AI+学习", R.drawable.icon_tab_aixx, R.drawable.icon_tab_aixx_pre));
|
||||
tabBeanLists.add(new TabBean("语文", R.drawable.icon_tab_yw, R.drawable.icon_tab_yw_pre));
|
||||
tabBeanLists.add(new TabBean("数学", R.drawable.icon_tab_sx, R.drawable.icon_tab_sx_pre));
|
||||
tabBeanLists.add(new TabBean("英语", R.drawable.icon_tab_yy, R.drawable.icon_tab_yy_pre));
|
||||
tabBeanLists.add(new TabBean("其他学科", R.drawable.icon_tab_qtxx, R.drawable.icon_tab_qtxx_pre));
|
||||
tabBeanLists.add(new TabBean("读书", R.drawable.icon_tab_ds, R.drawable.icon_tab_ds_pre));
|
||||
// if ("小学".equals(Util.checkGrade(SPUtils.getGrade()))) {
|
||||
tabBeanLists.add(new TabBean("素养课", R.drawable.icon_tab_syk, R.drawable.icon_tab_syk_pre));
|
||||
// }
|
||||
tabBeanLists.add(new TabBean("应用", R.drawable.icon_tab_lsaq, R.drawable.icon_tab_lsaq_pre));
|
||||
|
||||
tabAdapter.setData(tabBeanLists);
|
||||
tabAdapter.setChoosePosition(defaultCurrent);
|
||||
mViewDataBinding.subjectViewPager.setAdapter(new TabFragmentAdapter(getSupportFragmentManager()));
|
||||
mViewDataBinding.subjectViewPager.setCurrentItem(defaultCurrent);
|
||||
|
||||
Log.e(this.getClass().getSimpleName(), "initDatas: " + (System.currentTimeMillis() - time) + "ms");
|
||||
}
|
||||
|
||||
|
||||
private void hideSystemUI() {
|
||||
// Enables regular immersive mode.
|
||||
// For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE.
|
||||
@@ -912,7 +930,6 @@ public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBi
|
||||
} else {
|
||||
checkEula();
|
||||
checkAndRequestNotificationPermission();
|
||||
|
||||
}
|
||||
setDefaultDesktop();
|
||||
}
|
||||
@@ -991,13 +1008,13 @@ public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBi
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(@NonNull Bundle outState) {
|
||||
// super.onSaveInstanceState(outState);
|
||||
super.onSaveInstanceState(outState);
|
||||
Log.e(TAG, "onSaveInstanceState: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onRestoreInstanceState(Bundle savedInstanceState) {
|
||||
// super.onRestoreInstanceState(savedInstanceState);
|
||||
super.onRestoreInstanceState(savedInstanceState);
|
||||
Log.e(TAG, "onRestoreInstanceState: ");
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.xwad.os.R;
|
||||
import com.xwad.os.activity.download.DownloadActivity;
|
||||
import com.xwad.os.activity.home.HomeActivity;
|
||||
import com.xwad.os.base.mvvm.BaseMvvmActivity;
|
||||
import com.xwad.os.bean.UserExpireInfo;
|
||||
import com.xwad.os.databinding.ActivityLoginSuccessfulBinding;
|
||||
import com.xwad.os.utils.Utils;
|
||||
|
||||
@@ -46,6 +47,18 @@ public class LoginSuccessfulActivity extends BaseMvvmActivity<LoginSuccessfulVie
|
||||
finish();
|
||||
}
|
||||
});
|
||||
mViewModel.mUserExpireInfoData.observe(this, new Observer<UserExpireInfo>() {
|
||||
@Override
|
||||
public void onChanged(UserExpireInfo userExpireInfo) {
|
||||
if (userExpireInfo == null) {
|
||||
// mViewDataBinding.tvExpireAt.setText();
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// mViewModel.getUserExpireInfo();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.trello.rxlifecycle4.android.ActivityEvent;
|
||||
import com.xwad.os.base.mvvm.BaseViewModel;
|
||||
import com.xwad.os.bean.AppInfo;
|
||||
import com.xwad.os.bean.BaseResponse;
|
||||
import com.xwad.os.bean.UserExpireInfo;
|
||||
import com.xwad.os.config.CommonConfig;
|
||||
import com.xwad.os.databinding.ActivityLoginSuccessfulBinding;
|
||||
import com.xwad.os.jxw.JxwPackageConfig;
|
||||
@@ -41,6 +42,40 @@ public class LoginSuccessfulViewModel extends BaseViewModel<ActivityLoginSuccess
|
||||
|
||||
}
|
||||
|
||||
public MutableLiveData<UserExpireInfo> mUserExpireInfoData = new MutableLiveData<>();
|
||||
|
||||
public void getUserExpireInfo() {
|
||||
NetInterfaceManager.getInstance().getUserExpireInfoControl()
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<UserExpireInfo>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getUserExpireInfo", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<UserExpireInfo> userInfoBaseResponse) {
|
||||
Log.e("getUserExpireInfo", "onNext: " + userInfoBaseResponse);
|
||||
if (userInfoBaseResponse.code == 200) {
|
||||
UserExpireInfo userExpireInfo = userInfoBaseResponse.data;
|
||||
mUserExpireInfoData.setValue(userExpireInfo);
|
||||
} else {
|
||||
mUserExpireInfoData.setValue(null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("getUserExpireInfo", "onError: " + e.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getUserExpireInfo", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public MutableLiveData<Boolean> mCompleteLiveData = new MutableLiveData<>();
|
||||
|
||||
public void getAdminAppDownload() {
|
||||
|
||||
26
app/src/main/java/com/xwad/os/bean/UserExpireInfo.java
Normal file
26
app/src/main/java/com/xwad/os/bean/UserExpireInfo.java
Normal file
@@ -0,0 +1,26 @@
|
||||
package com.xwad.os.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class UserExpireInfo implements Serializable {
|
||||
private static final long serialVersionUID = 2733370887454572840L;
|
||||
|
||||
String expire_at;
|
||||
int year;
|
||||
|
||||
public String getExpire_at() {
|
||||
return expire_at;
|
||||
}
|
||||
|
||||
public void setExpire_at(String expire_at) {
|
||||
this.expire_at = expire_at;
|
||||
}
|
||||
|
||||
public int getYear() {
|
||||
return year;
|
||||
}
|
||||
|
||||
public void setYear(int year) {
|
||||
this.year = year;
|
||||
}
|
||||
}
|
||||
@@ -43,6 +43,7 @@ import com.xwad.os.bean.SnInfo;
|
||||
import com.xwad.os.bean.StudyStatBean;
|
||||
import com.xwad.os.bean.SystemSettings;
|
||||
import com.xwad.os.bean.UserAvatarInfo;
|
||||
import com.xwad.os.bean.UserExpireInfo;
|
||||
import com.xwad.os.bean.UserInfo;
|
||||
import com.xwad.os.bean.VipInfo;
|
||||
import com.xwad.os.bean.WhoisBean;
|
||||
@@ -507,6 +508,13 @@ public class NetInterfaceManager {
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse<UserExpireInfo>> getUserExpireInfoControl() {
|
||||
return mRetrofit.create(UserApi.class)
|
||||
.getUserExpireInfo(getToken())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse<List<VipInfo>>> getVipListControl() {
|
||||
return mRetrofit.create(UserApi.class)
|
||||
.getVipList(getToken(), BuildConfig.APPLICATION_ID)
|
||||
|
||||
@@ -20,6 +20,8 @@ public class UrlAddress {
|
||||
|
||||
/*用户会员信息(用于判断是否有VIP)*/
|
||||
public static final String USER_INFO = "user/info";
|
||||
/*获取设备过期时间*/
|
||||
public static final String USER_expire_info = "user/expire-info";
|
||||
/*套餐可选列表*/
|
||||
public static final String VIP_LIST = "user/vip-list";
|
||||
/*购买VIP下订单*/
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.xwad.os.bean.BaseResponse;
|
||||
import com.xwad.os.bean.CodeBean;
|
||||
import com.xwad.os.bean.OrderInfo;
|
||||
import com.xwad.os.bean.PayInfo;
|
||||
import com.xwad.os.bean.UserExpireInfo;
|
||||
import com.xwad.os.bean.UserInfo;
|
||||
import com.xwad.os.bean.VipInfo;
|
||||
import com.xwad.os.network.UrlAddress;
|
||||
@@ -24,6 +25,11 @@ public interface UserApi {
|
||||
@Header("token") String token
|
||||
);
|
||||
|
||||
@GET(UrlAddress.USER_expire_info)
|
||||
Observable<BaseResponse<UserExpireInfo>> getUserExpireInfo(
|
||||
@Header("token") String token
|
||||
);
|
||||
|
||||
@GET(UrlAddress.VIP_LIST)
|
||||
Observable<BaseResponse<List<VipInfo>>> getVipList(
|
||||
@Header("token") String token,
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 58 KiB |
@@ -87,6 +87,7 @@
|
||||
android:layout_weight="1">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_expire_at"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
<ImageView
|
||||
android:id="@+id/iv_djjp"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="34dp"
|
||||
android:layout_height="32dp"
|
||||
android:background="@drawable/icon_wd_cr" />
|
||||
|
||||
<LinearLayout
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<string name="license_hint">如果您的许可证从经销商手中获得,您可以在本页下方的对话框中输入许可证密钥,验证成功后,即可实现许可证的开通绑定,无需重复支付</string>
|
||||
<string name="license_notice">注意:请妥善保管您的许可证密钥,切勿遗失;\n许可证属于数字化虚拟商品,暂不支持退换,感谢您的理解与支持</string>
|
||||
|
||||
<string name="license_verification_successful">本机已激活成功,系统终身免费,谢谢您的使用。</string>
|
||||
<string name="license_verification_successful">本机已开通成功,欢迎使用,点击确定开启学习之旅!</string>
|
||||
<string name="validity_period">有效期:%d年</string>
|
||||
<string name="qrcode_expiration_time">二维码过期时间%s</string>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user