当我的用户注册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;
}
答案 0 :(得分:0)
我认为这是因为
你的代码中的完成()
。一般来说,
完成()
销毁活动。这就是你的应用关闭的原因。取下它并再次测试。希望这会有所帮助。
答案 1 :(得分:0)
我相信您的代码可以使用事件(订阅者/发布设计模式)在这里使用一点点解耦。我会给你一些想法或指导,以便你可以试一试。
build.gradle
文件后,您希望注册您的活动以侦听给定事件 - EventBus将通知正在收听通知的任何人。您可以通过调用onCreate()
在活动的EventBus.getDefault().register(this)
方法中注册,然后记得在onDestroy中取消注册,如下所示:EventBus.getDefault().unregister(this)
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为您提供的干净的发布者/订阅者设计模式来完成任务所需的全部内容。
我希望这个建议可以帮到你。如果您有任何进一步的需求或澄清问题,请告诉我,因为我很乐意提供帮助!