From 7d29c0d88331d2efd2a7c7f7b9ce1816d848a093 Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Tue, 3 Jul 2018 16:24:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=89=E7=8E=AF=E5=8A=A9=E6=89=8BV3.3=20RELE?= =?UTF-8?q?ASE=EF=BC=8820180701-0730=EF=BC=89=E6=B5=8B=E8=AF=95=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E6=B1=87=E6=80=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/gh/base/BaseActivity.java | 3 +- .../gh/base/fragment/BaseDialogFragment.java | 11 ++++ .../com/gh/base/fragment/BaseFragment.java | 3 +- .../base/fragment/OnDialogBackListener.java | 5 ++ .../base/fragment/WaitingDialogFragment.java | 16 ++++++ .../java/com/gh/common/util/DialogUtils.java | 4 +- .../com/gh/common/util/GameViewUtils.java | 2 - .../java/com/gh/common/util/ImageUtils.kt | 9 ++-- .../java/com/gh/gamecenter/MainActivity.java | 2 +- .../gamecenter/adapter/ImagePagerAdapter.java | 10 ++-- .../adapter/viewholder/GameViewHolder.java | 4 +- .../gh/gamecenter/game/GameItemViewHolder.kt | 4 +- .../com/gh/gamecenter/game/GameViewModel.kt | 2 +- .../gh/gamecenter/gamedetail/FuLiAdapter.java | 51 +++++++++++-------- .../gamedetail/GameDetailFragment.java | 4 +- .../kaifu/KaiFuWrapperFragment.java | 22 ++++---- .../qa/answer/edit/AnswerEditFragment.java | 24 +++++++-- .../gamecenter/qa/ask/QuestionEditActivity.kt | 15 +++++- .../qa/ask/QuestionEditViewModel.kt | 8 +-- .../res/layout/app_update_hint_dialog.xml | 43 ++++++++++------ .../main/res/layout/game_horizontal_item.xml | 14 +++-- 21 files changed, 176 insertions(+), 80 deletions(-) create mode 100644 app/src/main/java/com/gh/base/fragment/OnDialogBackListener.java diff --git a/app/src/main/java/com/gh/base/BaseActivity.java b/app/src/main/java/com/gh/base/BaseActivity.java index a547621f74..e0f896dbf3 100644 --- a/app/src/main/java/com/gh/base/BaseActivity.java +++ b/app/src/main/java/com/gh/base/BaseActivity.java @@ -54,7 +54,8 @@ public abstract class BaseActivity extends BaseToolBarActivity implements EasyPe @Override public void handleMessage(Message msg) { super.handleMessage(msg); - mActivityWeakReference.get().handleMessage(msg); + BaseActivity activity = mActivityWeakReference.get(); + if (activity != null) activity.handleMessage(msg); } } diff --git a/app/src/main/java/com/gh/base/fragment/BaseDialogFragment.java b/app/src/main/java/com/gh/base/fragment/BaseDialogFragment.java index f47b320de4..8f5502e4ae 100644 --- a/app/src/main/java/com/gh/base/fragment/BaseDialogFragment.java +++ b/app/src/main/java/com/gh/base/fragment/BaseDialogFragment.java @@ -6,7 +6,9 @@ import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.StringRes; import android.support.v4.app.DialogFragment; +import android.view.KeyEvent; +import com.gh.common.util.ClickUtils; import com.gh.gamecenter.R; import com.lightgame.utils.RuntimeUtils; import com.lightgame.utils.Utils; @@ -24,6 +26,12 @@ public class BaseDialogFragment extends DialogFragment { public Dialog onCreateDialog(Bundle savedInstanceState) { final Dialog dialog = new Dialog(getActivity(), R.style.DialogWindowTransparent); dialog.setCanceledOnTouchOutside(false); + dialog.setOnKeyListener((dialog1, keyCode, event) -> { + if (keyCode == KeyEvent.KEYCODE_BACK && ClickUtils.isFastDoubleClick()) { //会多次响应?? + return onBack(); + } + return false; + }); dialog.setCancelable(false); return dialog; } @@ -46,6 +54,9 @@ public class BaseDialogFragment extends DialogFragment { RuntimeUtils.getInstance().toastLong(getContext(), msg); } + public boolean onBack() { + return false; + } } diff --git a/app/src/main/java/com/gh/base/fragment/BaseFragment.java b/app/src/main/java/com/gh/base/fragment/BaseFragment.java index cb182050da..c0e864381b 100644 --- a/app/src/main/java/com/gh/base/fragment/BaseFragment.java +++ b/app/src/main/java/com/gh/base/fragment/BaseFragment.java @@ -60,7 +60,8 @@ public abstract class BaseFragment extends Fragment implements OnRequestCallB @Override public void handleMessage(Message msg) { super.handleMessage(msg); - mFragmentWeakReference.get().handleMessage(msg); + BaseFragment fragment = mFragmentWeakReference.get(); + if (fragment != null) fragment.handleMessage(msg); } } diff --git a/app/src/main/java/com/gh/base/fragment/OnDialogBackListener.java b/app/src/main/java/com/gh/base/fragment/OnDialogBackListener.java new file mode 100644 index 0000000000..fdf9a55296 --- /dev/null +++ b/app/src/main/java/com/gh/base/fragment/OnDialogBackListener.java @@ -0,0 +1,5 @@ +package com.gh.base.fragment; + +public interface OnDialogBackListener { + void onBack(); +} diff --git a/app/src/main/java/com/gh/base/fragment/WaitingDialogFragment.java b/app/src/main/java/com/gh/base/fragment/WaitingDialogFragment.java index 7c435c7a4e..c50e1ef8c9 100644 --- a/app/src/main/java/com/gh/base/fragment/WaitingDialogFragment.java +++ b/app/src/main/java/com/gh/base/fragment/WaitingDialogFragment.java @@ -19,6 +19,8 @@ public class WaitingDialogFragment extends BaseDialogFragment { public static final String KEY_MSG = "msg"; + private OnDialogBackListener mBackListener; + public static WaitingDialogFragment newInstance(String message) { Bundle args = new Bundle(); args.putString(KEY_MSG, message); @@ -55,6 +57,20 @@ public class WaitingDialogFragment extends BaseDialogFragment { } } + public void show(FragmentManager manager, String tag, OnDialogBackListener backListener) { + show(manager, tag); + this.mBackListener = backListener; + } + + @Override + public boolean onBack() { + if (mBackListener != null) { + mBackListener.onBack(); + return true; + } + return super.onBack(); + } + public static class WaitingDialogData { private String msg; diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java index 2fe98c7179..c627e49f2b 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -381,7 +381,7 @@ public class DialogUtils { * @param cmListener 确认按钮监听 * @param clListener 取消按钮监听 */ - public static void showAlertDialog(Context context, String title, CharSequence message + public static Dialog showAlertDialog(Context context, String title, CharSequence message , String positive, String negative, final ConfirmListener cmListener, final CancelListener clListener) { final Dialog dialog = new Dialog(context, R.style.GhAlertDialog); @@ -420,7 +420,7 @@ public class DialogUtils { dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(contentView); dialog.show(); - + return dialog; } /** diff --git a/app/src/main/java/com/gh/common/util/GameViewUtils.java b/app/src/main/java/com/gh/common/util/GameViewUtils.java index 04ad333cf2..d64942c475 100644 --- a/app/src/main/java/com/gh/common/util/GameViewUtils.java +++ b/app/src/main/java/com/gh/common/util/GameViewUtils.java @@ -13,7 +13,6 @@ import android.widget.TextView; import com.gh.gamecenter.R; import com.gh.gamecenter.entity.TagStyleEntity; -import com.lightgame.utils.Utils; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -69,7 +68,6 @@ public class GameViewUtils { String colorStr; if (!TextUtils.isEmpty(tagType) && "type".equals(tagType) && tagEntity != null) { // 游戏标签 - Utils.log("======:::" + tagEntity.getName()); colorStr = "#" + tagEntity.getColor(); GradientDrawable gradientDrawable = new GradientDrawable(); diff --git a/app/src/main/java/com/gh/common/util/ImageUtils.kt b/app/src/main/java/com/gh/common/util/ImageUtils.kt index 00b336a15c..74f776e1da 100644 --- a/app/src/main/java/com/gh/common/util/ImageUtils.kt +++ b/app/src/main/java/com/gh/common/util/ImageUtils.kt @@ -30,6 +30,7 @@ import org.json.JSONObject import retrofit2.HttpException import rx.Observable import rx.Observer +import rx.Subscription import rx.android.schedulers.AndroidSchedulers import rx.schedulers.Schedulers import java.io.File @@ -200,11 +201,11 @@ class ImageUtils private constructor() { }) } - fun postImage(context: Context?, picturePath: String?, listener: OnPostImageListener) { - if (context == null || TextUtils.isEmpty(picturePath)) return - Observable.create(Observable.OnSubscribe { subscriber -> + fun postImage(context: Context?, picturePath: String?, listener: OnPostImageListener): Subscription? { + if (context == null || TextUtils.isEmpty(picturePath)) return null + return Observable.create(Observable.OnSubscribe { subscriber -> val path = context.getCacheDir().path + File.separator + System.currentTimeMillis() + ".jpg" - if (BitmapUtils.savePicture(path, picturePath, 1024*1024)) { + if (BitmapUtils.savePicture(path, picturePath, 1024 * 1024)) { subscriber.onNext(FileUtils.uploadFile(Config.API_HOST + "images?type=community", path, UserManager.getInstance().token)) } else { subscriber.onNext(FileUtils.uploadFile(Config.API_HOST + "images?type=community", picturePath, UserManager.getInstance().token)) diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 734fe8bbbf..b7a2e818bf 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -1055,7 +1055,7 @@ public class MainActivity extends BaseActivity { // 删除map中数据 PackageManager.INSTANCE.removeInstalled(packageName); - if (mDownloadEntity != null) { + if (mDownloadEntity != null && mDownloadEntity.isPluggable()) { Map kv6 = new HashMap<>(); kv6.put("安装或卸载", "卸载完成"); DataUtils.onEvent(this, "插件化", mDownloadEntity.getName(), kv6); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java index 8794f8b5a0..a953e64da2 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java @@ -47,7 +47,7 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { mSlideEntityList = slideEntityList; mSize = getSize(slideEntityList); mIsInfiniteLoop = isInfiniteLoop; - mSource= source; + mSource = source; } public int getSize(List sourceList) { @@ -66,7 +66,10 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { view = new SimpleDraweeView(mContext); } - final SlideEntity slideEntity = mSlideEntityList.get(getPosition(position)); + int index = getPosition(position); + if (index >= mSlideEntityList.size()) return view; + + final SlideEntity slideEntity = mSlideEntityList.get(index); ImageUtils.Companion.getInstance().display(mContext.getResources(), (SimpleDraweeView) view, slideEntity.getImage(), R.drawable.preload); @@ -137,11 +140,12 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter { return this; } - public void checkResetData(List list) { + public void checkResetData(List list) { if (mSlideEntityList != list) { mSlideEntityList = list; mSize = getSize(list); } + notifyDataSetChanged(); } } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameViewHolder.java index f4667fea41..0e25ec6cb5 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/GameViewHolder.java @@ -49,7 +49,9 @@ public class GameViewHolder extends BaseRecyclerViewHolder { public void initServerType(GameEntity gameEntity, Context context) { int paddRight = 0; String serverRemark = gameEntity.getServerRemark(); - if (TextUtils.isEmpty(serverRemark)) { + if (gameEntity.getTest() != null) { + gameServerType.setVisibility(View.GONE); + } else if (TextUtils.isEmpty(serverRemark)) { String serverGenre = gameEntity.getServerGenre(); if (TextUtils.isEmpty(serverGenre)) { gameServerType.setVisibility(View.GONE); diff --git a/app/src/main/java/com/gh/gamecenter/game/GameItemViewHolder.kt b/app/src/main/java/com/gh/gamecenter/game/GameItemViewHolder.kt index befa8c8c35..9893c4cfbf 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameItemViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/game/GameItemViewHolder.kt @@ -17,7 +17,9 @@ class GameItemViewHolder(bind: GameItemBinding) : BaseRecyclerViewHolder(bi if (gameEntity == null) return var paddRight = 0 val serverRemark = gameEntity.serverRemark - if (TextUtils.isEmpty(serverRemark)) { + if (gameEntity.test != null) { + binding.gameKaifuType.setVisibility(View.GONE) + } else if (TextUtils.isEmpty(serverRemark)) { val serverGenre = gameEntity.serverGenre if (TextUtils.isEmpty(serverGenre)) { binding.gameKaifuType.setVisibility(View.GONE) diff --git a/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt b/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt index 2c4014c98d..95aa4a9f11 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt @@ -162,7 +162,7 @@ class GameViewModel(application: Application, blockData: SubjectRecommendEntity? fun getSubjectList(initData: Boolean) { - if (mIsLoading) return + if (mIsLoading && !initData) return mIsLoading = true if (initData) mSubjectPage = 1 diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java index d0b6abab8d..08a3724102 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/FuLiAdapter.java @@ -233,26 +233,7 @@ public class FuLiAdapter extends BaseRecyclerAdapter { @Override public void onResponse(List response) { Config.filterPluginArticle(response); - GameDetailContact contact = mGameDetailEntity.getContact(); - if (!mGameEntity.isLibaoExists() && response.size() == 0 - && TextUtils.isEmpty(mGameDetailEntity.getFulishuoming()) - && (mGameDetailEntity.getServerEntity() == null - || (mGameDetailEntity.getServerEntity().getCalendar() != null - && mGameDetailEntity.getServerEntity().getCalendar().size() == 0)) - && (contact == null || (TextUtils.isEmpty(contact.getPlayer().getKey()) - && TextUtils.isEmpty(contact.getService().getQq())))) { // 判断当前页面内容是否内容 - mIsPageEmpty = true; - notifyDataSetChanged(); // 空白页面提示 - - Timer timer = new Timer(); - timer.schedule(new TimerTask() { - @Override - public void run() { - EventBus.getDefault().post(new EBReuse(GameDetailFragment.SKIP_XINXI)); - } - }, 500); - } - + checkEmptyData(response); mGameDetailEntity.setNews(response); initPosition(); notifyDataSetChanged(); @@ -260,12 +241,38 @@ public class FuLiAdapter extends BaseRecyclerAdapter { @Override public void onFailure(HttpException e) { - initPosition(); - notifyDataSetChanged(); + if (e != null && e.code() == 404) { + checkEmptyData(new ArrayList<>()); + } else { + initPosition(); + notifyDataSetChanged(); + } } }); } + public void checkEmptyData(List response) { + GameDetailContact contact = mGameDetailEntity.getContact(); + if (!mGameEntity.isLibaoExists() && response.size() == 0 + && TextUtils.isEmpty(mGameDetailEntity.getFulishuoming()) + && (mGameDetailEntity.getServerEntity() == null + || (mGameDetailEntity.getServerEntity().getCalendar() != null + && mGameDetailEntity.getServerEntity().getCalendar().size() == 0)) + && (contact == null || (TextUtils.isEmpty(contact.getPlayer().getKey()) + && TextUtils.isEmpty(contact.getService().getQq())))) { // 判断当前页面内容是否内容 + mIsPageEmpty = true; + notifyDataSetChanged(); // 空白页面提示 + + Timer timer = new Timer(); + timer.schedule(new TimerTask() { + @Override + public void run() { + EventBus.getDefault().post(new EBReuse(GameDetailFragment.SKIP_XINXI)); + } + }, 500); + } + } + private void addLibaoList() { if (mGameEntity == null) return; RetrofitManager.getInstance(mContext).getApi() diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.java b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.java index f81d36349f..aeb53e4220 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.java @@ -318,7 +318,9 @@ public class GameDetailFragment extends NormalFragment { int paddRight = 0; String serverRemark = mGameEntity.getServerRemark(); - if (TextUtils.isEmpty(serverRemark)) { + if (mGameEntity.getTest() != null) { + mServerType.setVisibility(View.GONE); + } else if (TextUtils.isEmpty(serverRemark)) { String serverGenre = mGameEntity.getServerGenre(); if (TextUtils.isEmpty(serverGenre)) { mServerType.setVisibility(View.GONE); diff --git a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuWrapperFragment.java b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuWrapperFragment.java index 708dae8c42..0443a88e71 100644 --- a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuWrapperFragment.java +++ b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuWrapperFragment.java @@ -98,7 +98,7 @@ public class KaiFuWrapperFragment extends NormalFragment { fragmentTransaction.add(R.id.layout_fragment_content, mKaiFuFragment); fragmentTransaction.commit(); - mSkipNextTime.setTag(SHOW_NEXT_TIME); + if (mSkipNextTime != null) mSkipNextTime.setTag(SHOW_NEXT_TIME); } private void resetFragment() { @@ -139,9 +139,9 @@ public class KaiFuWrapperFragment extends NormalFragment { public void pageChange(int index) { if (index == 0) { - mSkipCurTime.setVisibility(View.VISIBLE); + if (mSkipCurTime != null) mSkipCurTime.setVisibility(View.VISIBLE); } else { - mSkipCurTime.setVisibility(View.GONE); + if (mSkipCurTime != null) mSkipCurTime.setVisibility(View.GONE); } String status = mKaiFuHintMap.get(index); @@ -151,19 +151,17 @@ public class KaiFuWrapperFragment extends NormalFragment { } private void changeHintStyle(String status) { -// Drawable drawable; if (status.equals(SHOW_LIST_TOP)) { - mSkipNextTime.setImageResource(R.drawable.kaifu_hint_icon_up); -// drawable = ContextCompat.getDrawable(getContext(), R.drawable.kaifu_hint_icon_up); + if (mSkipNextTime != null) { + mSkipNextTime.setImageResource(R.drawable.kaifu_hint_icon_up); + } } else { - mSkipNextTime.setImageResource(R.drawable.kaifu_hint_icon_down); -// drawable = ContextCompat.getDrawable(getContext(), R.drawable.kaifu_hint_icon_down); + if (mSkipNextTime != null) { + mSkipNextTime.setImageResource(R.drawable.kaifu_hint_icon_down); + } } -// drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight()); -// mSkipNextTime.setCompoundDrawables(null, null, drawable, null); -// mSkipNextTime.setText(status); - mSkipNextTime.setTag(status); + if (mSkipNextTime != null) mSkipNextTime.setTag(status); } @Subscribe(threadMode = ThreadMode.MAIN) diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditFragment.java b/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditFragment.java index 53f1e85c50..ad6695afd0 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditFragment.java +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditFragment.java @@ -1,6 +1,7 @@ package com.gh.gamecenter.qa.answer.edit; import android.app.Activity; +import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.database.Cursor; @@ -26,10 +27,10 @@ import com.gh.common.util.EntranceUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.LoginUtils; import com.gh.common.view.RichEditor; -import com.gh.gamecenter.qa.answer.detail.AnswerDetailActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.manager.UserManager; import com.gh.gamecenter.normal.NormalFragment; +import com.gh.gamecenter.qa.answer.detail.AnswerDetailActivity; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; import com.halo.assistant.fragment.user.SelectPortraitFragment; @@ -51,6 +52,7 @@ import okhttp3.RequestBody; import okhttp3.ResponseBody; import retrofit2.HttpException; import rx.Observable; +import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; @@ -82,6 +84,9 @@ public class AnswerEditFragment extends NormalFragment { private WaitingDialogFragment postDialog; + private Subscription mUploadImageSubscription; + private Dialog mUpdateImageCancelDialog; + private String mAnswerId; // 以mAnswerId为标识,如果mAnswerId不为空则是-修改答案(不需要保存草稿) 为空则是-编写答案 private String mAnswerContent; @@ -200,11 +205,23 @@ public class AnswerEditFragment extends NormalFragment { private void postImg(String picturePath) { if (getContext() == null) return; postDialog = WaitingDialogFragment.newInstance(getString(R.string.post_img)); - postDialog.show(getChildFragmentManager(), null); - ImageUtils.Companion.postImage(getContext(), picturePath, new ImageUtils.OnPostImageListener() { + postDialog.show(getChildFragmentManager(), null, () -> { + if (mUploadImageSubscription != null && !mUploadImageSubscription.isUnsubscribed()) { + mUpdateImageCancelDialog = DialogUtils.showAlertDialog(getContext(), "提示", "图片正在上传中,确定取消吗?" + , "确定", "取消", () -> { + mUploadImageSubscription.unsubscribe(); + if (postDialog != null) postDialog.dismissAllowingStateLoss(); + if (mUpdateImageCancelDialog != null) { + mUpdateImageCancelDialog.dismiss(); + } + }, null); + } + }); + mUploadImageSubscription = ImageUtils.Companion.postImage(getContext(), picturePath, new ImageUtils.OnPostImageListener() { @Override public void postSuccess(JSONObject response) { if (postDialog != null) postDialog.dismissAllowingStateLoss(); + if (mUpdateImageCancelDialog != null) mUpdateImageCancelDialog.dismiss(); if (response == null) { toast("图片上传失败,请检查网络"); return; @@ -227,6 +244,7 @@ public class AnswerEditFragment extends NormalFragment { @Override public void postError() { if (postDialog != null) postDialog.dismissAllowingStateLoss(); + if (mUpdateImageCancelDialog != null) mUpdateImageCancelDialog.dismiss(); toast("图片上传失败,请检查网络"); } }); diff --git a/app/src/main/java/com/gh/gamecenter/qa/ask/QuestionEditActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/ask/QuestionEditActivity.kt index 39779a48b2..8abf5cb0ab 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/ask/QuestionEditActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/ask/QuestionEditActivity.kt @@ -1,6 +1,7 @@ package com.gh.gamecenter.qa.ask import android.annotation.SuppressLint +import android.app.Dialog import android.arch.lifecycle.Observer import android.arch.lifecycle.ViewModelProviders import android.content.Context @@ -35,6 +36,7 @@ class QuestionEditActivity : BaseActivity() { private var mViewModel: QuestionEditViewModel? = null private var mProcessingDialog: WaitingDialogFragment? = null + private var mUpdateImageCancelDialog: Dialog? = null companion object { // searchKey 补充到标题(新增问题) @@ -126,8 +128,19 @@ class QuestionEditActivity : BaseActivity() { mViewModel?.processDialog?.observe(this, Observer { it -> if (it?.isShow!!) { mProcessingDialog = WaitingDialogFragment.newInstance(it.msg, false) - mProcessingDialog?.show(supportFragmentManager, null) + mProcessingDialog?.show(supportFragmentManager, null, { + if (mViewModel?.uploadImageSubscription != null && !mViewModel?.uploadImageSubscription!!.isUnsubscribed) { + mUpdateImageCancelDialog = DialogUtils.showAlertDialog(this, "提示" + , "图片正在上传中,确定取消吗?" + , "确定", "取消", { + mViewModel?.uploadImageSubscription!!.unsubscribe() + mUpdateImageCancelDialog?.dismiss() + mProcessingDialog?.dismiss() + }, null) + } + }) } else { + mUpdateImageCancelDialog?.dismiss() mProcessingDialog?.dismiss() } }) diff --git a/app/src/main/java/com/gh/gamecenter/qa/ask/QuestionEditViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/ask/QuestionEditViewModel.kt index 4c6bcdc8c3..e0b32bfdc4 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/ask/QuestionEditViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/ask/QuestionEditViewModel.kt @@ -25,6 +25,7 @@ import okhttp3.RequestBody import okhttp3.ResponseBody import org.json.JSONObject import retrofit2.HttpException +import rx.Subscription import rx.android.schedulers.AndroidSchedulers import rx.schedulers.Schedulers import java.io.File @@ -51,6 +52,8 @@ class QuestionEditViewModel(application: Application) : AndroidViewModel(applica val processDialog = MediatorLiveData() val titleTags = MediatorLiveData>() + var uploadImageSubscription: Subscription? = null + // post data var title: String? = "" var content: String? = "" @@ -183,8 +186,9 @@ class QuestionEditViewModel(application: Application) : AndroidViewModel(applica } processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传中...", true)) - ImageUtils.postImage(getApplication(), picPath, object : ImageUtils.OnPostImageListener { + uploadImageSubscription = ImageUtils.postImage(getApplication(), picPath, object : ImageUtils.OnPostImageListener { override fun postSuccess(response: JSONObject?) { + processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传中...", false)) if (response == null) { Utils.toast(getApplication(), "图片上传失败,请检查网络") return @@ -200,8 +204,6 @@ class QuestionEditViewModel(application: Application) : AndroidViewModel(applica } else { Utils.toast(getApplication(), "图片上传失败,请检查网络") } - - processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传中...", false)) } override fun postError() { diff --git a/app/src/main/res/layout/app_update_hint_dialog.xml b/app/src/main/res/layout/app_update_hint_dialog.xml index 260e34faf3..77da6d1548 100644 --- a/app/src/main/res/layout/app_update_hint_dialog.xml +++ b/app/src/main/res/layout/app_update_hint_dialog.xml @@ -40,28 +40,39 @@ android:textColor = "@color/text_9a9a9a" android:textSize = "14sp" /> - + android:layout_marginBottom = "25dp" + android:layout_marginTop = "25dp" > - + + + + + + + + android:layout_height = "wrap_content" > + xmlns:fresco = "http://schemas.android.com/apk/res-auto" + xmlns:tools = "http://schemas.android.com/tools" > @@ -15,6 +16,7 @@ + app:layout_constraintRight_toRightOf = "parent" + fresco:roundedCornerRadius = "10dp" /> + app:layout_constraintTop_toBottomOf = "@id/game_icon" + tools:text = "超杀默示录" />