【问题标题】:Android: How to enable button when service complete its task?Android:服务完成任务时如何启用按钮?
【发布时间】:2013-01-19 07:42:33
【问题描述】:

我在 MainActivity.java 上有两个按钮 StartButtonStopButton 。当我按下 StartButton 时,会创建一个 Service 并且 StartButton 会获得 disable。在按下 StopButton 时,Service 会被销毁,StartButton 会被 enable

我想做的是启用我的开始按钮,因为服务完成了它的任务;它在我的 MainActivity.java 上返回任何通知或触发类型事件或消息值,以便我的开始按钮启用。

请给我任何想法、概念或代码,以便我理解。

【问题讨论】:

标签: java android button android-activity android-service


【解决方案1】:

要了解服务和应用程序之间的通信,请查看android developer docs 中的示例。 您可以在 onServiceDisconnected() 和 onServiceConnected() 方法中启用和禁用按钮。

请记住,默认情况下,该服务与您的应用在同一线程中运行。

【讨论】:

    【解决方案2】:

    你试过了吗,

    MyButton.setClickable(false);
    

    这将使按钮被禁用。

    MyButton.setClickable(true);
    

    它将启用按钮。

    但是,如果你想隐藏或显示按钮,你可以使用,

    MyButton.setVisibiity(VIEW.VISIBLE);MyButton.setVisibiity(VIEW.INVISIBLE);

    Edit-当你想要启用按钮时,一旦它的任务完成,你可以打开带有标志值 true 的 mainActivity,像这样,

    Intent i= new Intent(getBaseContext(), myActivity.class);
    i.putExtra("flag", true);
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    getApplication().startActivity(i);
    

    ma​​inActivity中,检查flag的值,

    Boolean flag;
    flag = this.getIntent().getBooleanExtra("flag", false);
    if(flag == true) {
    MyButton.setClickable(true);
    }
    

    但是对于它,您应该将标志的值最初保持为false

    点击按钮后,您可以将其设置为不可点击。

    【讨论】:

    • @downvoter:我很想听听这个答案的问题,所以我可以改进它。
    • 我很确定 ZUBAir hashmi 已经知道如何启用/禁用按钮。问题是如何从Service
    • @vmironov 我已经编辑了答案以添加一些含义。
    • 好的。但是开始新的活动而不是更新现有的活动确实是个坏主意。
    【解决方案3】:

    有很多方法可以实现这一点。让我告诉你一个广播接收器。我希望您了解 BroadcastReceiver 的概念。

    您的活动需要更改

    1) 在您的活动中创建一个广播接收器作为内部类。

    2) 用一些动作注册它,假设是“MY_ACTION”。(记得在 onPause/onDestroy 方法上取消注册这个接收器)

    3) 假设服务完成了它的任务,并且你进入了广播接收器的 onReceive 方法,现在编写你的代码来启用/禁用按钮(希望你知道怎么做)

    您的服务需要更改

    1) 找出您认为其任务已完成的代码。

    2) 创建具有相同操作的意图(“MY_ACTION”)。

    3) 使用 sendBroadcast 广播消息,intent 作为参数。你就完成了。 :)

    让我知道您是否在任何时候觉得自己被卡住了,

    【讨论】:

      猜你喜欢
      • 2022-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-21
      相关资源
      最近更新 更多