来自PHP的回复

时间:2015-08-03 15:57:19

标签: php android

当我的用户注册mysql时,我遇到了一个问题 注册用户名和密码后,应用程序必须显示消息“用户创建成功” 但该应用程序不会显示任何消息,而是自行关闭。

用户名已插入数据库 即使我发送空数据,它也会给我带来同样的问题。

这是我的PHP回复

$response["success"] = 1;
$response["message"] = "Username Successfully Added!";
echo json_encode($response);

这是我的注册Java代码

        Log.d("Login attempt", json.toString());

        // json success element
        success = json.getInt(TAG_SUCCESS);
        if (success == 1) {


            Log.d("Username Successfully Added!", json.toString());
            finish();
            return json.getString(TAG_MESSAGE);
        }else{
            Log.d("Login Failure!", json.getString(TAG_MESSAGE));
            return json.getString(TAG_MESSAGE);

        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

    return null;

}

2 个答案:

答案 0 :(得分:0)

我认为这是因为

  

完成()

你的代码中的

。一般来说,

  

完成()

销毁活动。这就是你的应用关闭的原因。取下它并再次测试。希望这会有所帮助。

答案 1 :(得分:0)

我相信您的代码可以使用事件(订阅者/发布设计模式)在这里使用一点点解耦。我会给你一些想法或指导,以便你可以试一试。

  • 我目前最喜欢的方法是使用jsoneditoronline - 一个经过良好测试的简单安卓库,可帮助解耦代码(消除或简单地减少依赖关系)。
  • 将库添加到build.gradle文件后,您希望注册您的活动以侦听给定事件 - EventBus将通知正在收听通知的任何人。您可以通过调用onCreate()在活动的EventBus.getDefault().register(this)方法中注册,然后记得在onDestroy中取消注册,如下所示:EventBus.getDefault().unregister(this)
  • 接下来要创建一个POJO类(普通旧Java对象),如LoginCompletedEvent这应该包含您需要传递回UI的任何变量,或者是谁正在从后台操作中侦听更新,例如制作HTTP请求。
  • 目前,如果您在onPostExecute()方法内使用AsyncTask,则可以通过执行以下操作通知您的活动登录操作或注册是否成功:EventBus.getDefault().post(new LoginCompletedEvent(true, message))。这会将响应消息传递给订阅者,以便您可以相应地更新UI。
  • 最后,在您的Activity或Fragment(Subscriber)中,您只需 添加具有以下签名的方法以获得通知并捕获传回的数据:

    public void onEvent(LoginCompletedEvent event){ //do something with the feedback here}
    

这就是使用EventBus为您提供的干净的发布者/订阅者设计模式来完成任务所需的全部内容。

我希望这个建议可以帮到你。如果您有任何进一步的需求或澄清问题,请告诉我,因为我很乐意提供帮助!