diff --git a/app/src/main/java/cc/niushuai/project/devcontrol/base/ui/BaseActivity.java b/app/src/main/java/cc/niushuai/project/devcontrol/base/ui/BaseActivity.java index ac83f19..2841198 100644 --- a/app/src/main/java/cc/niushuai/project/devcontrol/base/ui/BaseActivity.java +++ b/app/src/main/java/cc/niushuai/project/devcontrol/base/ui/BaseActivity.java @@ -1,5 +1,7 @@ package cc.niushuai.project.devcontrol.base.ui; +import android.app.Activity; +import android.content.Intent; import android.view.View; import android.widget.TextView; @@ -15,6 +17,7 @@ import cc.niushuai.project.devcontrol.base.util.Global; import cc.niushuai.project.devcontrol.base.util.Keys; import cc.niushuai.project.devcontrol.base.util.ToastUtil; import cc.niushuai.project.devcontrol.base.util.UiUtil; +import cc.niushuai.project.devcontrol.base.util.XLog; import cc.niushuai.project.devcontrol.ui.common.IconSelectDialogFragment; import cc.niushuai.project.devcontrol.vo.DeviceInfo; import cn.hutool.core.util.StrUtil; @@ -98,17 +101,6 @@ public abstract class BaseActivity extends AppCompatActivity { protected void addListener() { } - /** - * 返回上一页 - * - * @param activity - * @author niushuai - * @date: 2022/10/19 14:46 - */ - protected void activityButtonBackClickListener(BaseActivity activity) { - findViewById(R.id.activity_title_back).setOnClickListener(view -> activity.finish()); - } - /** * 自定义back的点击事件 * @@ -120,6 +112,65 @@ public abstract class BaseActivity extends AppCompatActivity { findViewById(R.id.activity_title_back).setOnClickListener(onClickListener); } + /** + * 返回上一页 + * + * @param activity + * @author niushuai + * @date: 2022/10/19 14:46 + */ + protected void activityButtonBackClickListener(BaseActivity activity) { + findViewById(R.id.activity_title_back).setOnClickListener(view -> { + XLog.v(Keys.Tag.ACTIVITY_JUMP, "{}.activityButtonBackClickListener: 携带device数据", this.getClass().getSimpleName()); + withBackData(activity); + activity.finish(); + }); + } + + /** + * 返回上一层时携带当前的device信息 + * + * @param activity + * @author niushuai233 + * @date: 2022/10/28 14:59 + */ + private void withBackData(BaseActivity activity) { + Intent data = new Intent(); + data.putExtra(Keys.DEVICE_INFO, this.device); + activity.setResult(Keys.RequestCode.GENERAL, data); + } + + /** + * 返回键被按下监控事件 + * + * @author niushuai233 + * @date: 2022/10/28 14:59 + */ + @Override + public void onBackPressed() { + XLog.v(Keys.Tag.ACTIVITY_JUMP, "{}.onBackPressed: 携带device数据", this.getClass().getSimpleName()); + withBackData(this); + super.onBackPressed(); + } + + /** + * 接收其他页面传输的数据 + * + * @param requestCode + * @param resultCode + * @param data + * @author niushuai233 + * @date: 2022/10/28 15:04 + */ + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + XLog.v(Keys.Tag.ACTIVITY_JUMP, "{}.onActivityResult: requestCode: {}, resultCode: {}, 处理返回数据: {}", this.getClass().getSimpleName(), requestCode, resultCode, data); + super.onActivityResult(requestCode, resultCode, data); + if (null!= data && null != data.getSerializableExtra(Keys.DEVICE_INFO)) { + this.device = (DeviceInfo) data.getSerializableExtra(Keys.DEVICE_INFO); + } + } + /** * 更多设置 打开新的activity * @@ -136,7 +187,7 @@ public abstract class BaseActivity extends AppCompatActivity { moreSetView.setVisibility(View.GONE); return; } - moreSetView.setOnClickListener(view -> ActivityUtil.startActivity(activity, clazz, withData)); + moreSetView.setOnClickListener(view -> ActivityUtil.startActivityForResult(activity, clazz, withData, Keys.RequestCode.GENERAL)); } /** @@ -156,7 +207,7 @@ public abstract class BaseActivity extends AppCompatActivity { moreSetView.setVisibility(View.GONE); return; } - moreSetView.setOnClickListener(view -> ActivityUtil.startActivity(activity, clazz, keys, values)); + moreSetView.setOnClickListener(view -> ActivityUtil.startActivityForResult(activity, clazz, keys, values, Keys.RequestCode.GENERAL)); } /** @@ -205,6 +256,30 @@ public abstract class BaseActivity extends AppCompatActivity { Global.initDeviceInfoMap(); } + /** + * 返回上一页 + * + * @author niushuai233 + * @date: 2022/10/28 15:16 + */ + protected void back() { + this.finish(); + } + + /** + * 携带deviceInfo返回上一页 + * + * @author niushuai233 + * @date: 2022/10/28 15:16 + */ + protected void backWithDeviceInfo() { + Intent data = new Intent(); + data.putExtra(Keys.DEVICE_INFO, this.device); + this.setResult(Keys.RequestCode.GENERAL, data); + XLog.v(Keys.Tag.ACTIVITY_JUMP, "{}.backWithDeviceInfo 携带device数据", this.getClass().getSimpleName()); + this.back(); + } + /** * 执行命令 返回成功与否 diff --git a/app/src/main/java/cc/niushuai/project/devcontrol/base/util/ActivityUtil.java b/app/src/main/java/cc/niushuai/project/devcontrol/base/util/ActivityUtil.java index 3252e39..6f6a982 100644 --- a/app/src/main/java/cc/niushuai/project/devcontrol/base/util/ActivityUtil.java +++ b/app/src/main/java/cc/niushuai/project/devcontrol/base/util/ActivityUtil.java @@ -25,8 +25,7 @@ public class ActivityUtil { startActivity(sourceActivity, targetActivity, map); } - public static void startActivity(Activity sourceActivity, Class targetActivity, - Map withData) { + public static void startActivity(Activity sourceActivity, Class targetActivity, Map withData) { Intent intent = new Intent(sourceActivity, targetActivity); if (null != withData) { for (String key : withData.keySet()) { @@ -35,4 +34,24 @@ public class ActivityUtil { } sourceActivity.startActivity(intent); } + + public static void startActivityForResult(Activity sourceActivity, Class targetActivity, Map withData, Integer requestCode) { + + Intent intent = new Intent(sourceActivity, targetActivity); + if (null != withData) { + for (String key : withData.keySet()) { + intent.putExtra(key, withData.get(key)); + } + } + sourceActivity.startActivityForResult(intent, requestCode); + } + + public static void startActivityForResult(Activity sourceActivity, Class targetActivity, String[] keys, String[] values, Integer requestCode) { + + HashMap map = new HashMap<>(); + for (int i = 0; i < keys.length; i++) { + map.put(keys[i], values[i]); + } + startActivityForResult(sourceActivity, targetActivity, map, requestCode); + } } diff --git a/app/src/main/java/cc/niushuai/project/devcontrol/base/util/ExecUtil.java b/app/src/main/java/cc/niushuai/project/devcontrol/base/util/ExecUtil.java index a4611e4..a8963a4 100644 --- a/app/src/main/java/cc/niushuai/project/devcontrol/base/util/ExecUtil.java +++ b/app/src/main/java/cc/niushuai/project/devcontrol/base/util/ExecUtil.java @@ -47,7 +47,7 @@ public class ExecUtil { XLog.i(Keys.Tag.EXEC_COMMAND, "执行命令: {}, 结果: {}", command, result); return new CommandResult<>(true, result); } catch (Exception e) { - XLog.e(Keys.Tag.EXEC_COMMAND, "执行命令: {}, 异常: {}", command, e.getMessage(), e); + XLog.e(Keys.Tag.EXEC_COMMAND, "执行命令: {}, 异常", command, e); return new CommandResult<>(false, e.getMessage()); } } diff --git a/app/src/main/java/cc/niushuai/project/devcontrol/base/util/Keys.java b/app/src/main/java/cc/niushuai/project/devcontrol/base/util/Keys.java index 4ea6f1c..52ea739 100644 --- a/app/src/main/java/cc/niushuai/project/devcontrol/base/util/Keys.java +++ b/app/src/main/java/cc/niushuai/project/devcontrol/base/util/Keys.java @@ -3,6 +3,8 @@ package cc.niushuai.project.devcontrol.base.util; public interface Keys { String ID = "id"; + String DEVICE = "device"; + String DEVICE_INFO = "deviceInfo"; String DB_FILE_NAME = "dev_control.db"; @@ -22,5 +24,14 @@ public interface Keys { String KEEP_DAY_SELECT = "KeepDaySelect"; String APP_SETUP = "AppSetup"; String EXEC_COMMAND = "ExecCommand"; + String ACTIVITY_JUMP = "ActivityJump"; } + + interface RequestCode { + + int GENERAL = 1; + + } + + } diff --git a/app/src/main/java/cc/niushuai/project/devcontrol/ui/powerswitch/PowerSwitchSetActivity.java b/app/src/main/java/cc/niushuai/project/devcontrol/ui/powerswitch/PowerSwitchSetActivity.java index 8805b14..3b41aca 100644 --- a/app/src/main/java/cc/niushuai/project/devcontrol/ui/powerswitch/PowerSwitchSetActivity.java +++ b/app/src/main/java/cc/niushuai/project/devcontrol/ui/powerswitch/PowerSwitchSetActivity.java @@ -53,7 +53,7 @@ public class PowerSwitchSetActivity extends BaseActivity { HashMap withData = new HashMap<>(1); withData.put(Keys.ID, device.getId()); - ActivityUtil.startActivity(this, PowerSwitchSetParamActivity.class, withData); + ActivityUtil.startActivityForResult(this, PowerSwitchSetParamActivity.class, withData, Keys.RequestCode.GENERAL); } private void outsideLogViewClickListener(View view) { diff --git a/app/src/main/java/cc/niushuai/project/devcontrol/ui/powerswitch/PowerSwitchSetParamActivity.java b/app/src/main/java/cc/niushuai/project/devcontrol/ui/powerswitch/PowerSwitchSetParamActivity.java index 5ecba74..d283c19 100644 --- a/app/src/main/java/cc/niushuai/project/devcontrol/ui/powerswitch/PowerSwitchSetParamActivity.java +++ b/app/src/main/java/cc/niushuai/project/devcontrol/ui/powerswitch/PowerSwitchSetParamActivity.java @@ -1,5 +1,6 @@ package cc.niushuai.project.devcontrol.ui.powerswitch; +import android.content.Intent; import android.os.Bundle; import android.view.View; @@ -11,6 +12,7 @@ import cc.niushuai.project.devcontrol.R; import cc.niushuai.project.devcontrol.base.ui.BaseActivity; import cc.niushuai.project.devcontrol.base.util.CommonUiUtil; import cc.niushuai.project.devcontrol.base.util.Global; +import cc.niushuai.project.devcontrol.base.util.Keys; import cc.niushuai.project.devcontrol.databinding.ActivityPowerSwitchSetParamBinding; import cc.niushuai.project.devcontrol.db.DB; import cc.niushuai.project.devcontrol.vo.DeviceInfo; @@ -76,7 +78,7 @@ public class PowerSwitchSetParamActivity extends BaseActivity { device = deviceInfo; // 返回上一层 - this.finish(); + super.backWithDeviceInfo(); } @Override