Java 首次用户登录android后显示空值
我在一个应用程序中有3个片段,其中一个片段显示了SQLite数据库中的用户名。当我注册一个新用户并第一次登录时,在用户名应该出现的textview中,它显示空值,但当我注销并再次登录同一个用户时,用户名显示为它应该显示的值 注册用户后,所有数据都插入到数据库中,我已经检查过了 你知道什么会导致这个问题吗?我将根据请求添加一些代码,因为我不知道代码的哪一部分、片段或java文件可能会导致这种情况 已编辑 我添加了一些代码来帮助解决这个问题 主屏幕内的登录功能(一旦应用程序启动):Java 首次用户登录android后显示空值,java,android,sqlite,Java,Android,Sqlite,我在一个应用程序中有3个片段,其中一个片段显示了SQLite数据库中的用户名。当我注册一个新用户并第一次登录时,在用户名应该出现的textview中,它显示空值,但当我注销并再次登录同一个用户时,用户名显示为它应该显示的值 注册用户后,所有数据都插入到数据库中,我已经检查过了 你知道什么会导致这个问题吗?我将根据请求添加一些代码,因为我不知道代码的哪一部分、片段或java文件可能会导致这种情况 已编辑 我添加了一些代码来帮助解决这个问题 主屏幕内的登录功能(一旦应用程序启动): 我自己设法解决了
我自己设法解决了这个问题。。问题不在java文件中,而是由于某种原因发送到java的php文件中 在我使用的php函数中:
$stmt->bind_result($id, $unique_id, $name, $email, $encrypted_password, $salt, $created_at, $updated_at);
$user = $stmt->fetch();
但后来改成了
$user = $stmt->get_result()->fetch_assoc();
这就解决了问题。您确定变量不应该为空吗?是否分配它,然后显示?可能会有一些代码需要处理。问题可能在任何时候-数据库未返回用户名,控制器/DAO层未将正确的名称返回给客户端,或者客户端代码处理不正确,因此无法显示。。因此,理想情况下,您应该将所有3层中的相关部分放入。一旦用户注册,他的详细信息将添加到mysql和sqlite数据库中。所有数据都将插入,但没有任何可显示的空数据。我将在second@hagrawal但为什么当用户第二次登录时它会起作用呢?这就是我们将尝试了解的。。
public void onResponse(String response) {
Log.d(TAG, "Register Response: " + response.toString());
hideDialog();
try {
JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error");
if (!error) {
// User successfully stored in MySQL
// Now store the user in sqlite
String uid = jObj.getString("uid");
JSONObject user = jObj.getJSONObject("user");
String name = user.getString("name");
String email = user.getString("email");
String created_at = user.getString("created_at");
// Inserting row in users table
db.addUser(name, email, uid, created_at);
// Launch login activity
Intent intent = new Intent(
Register.this,
Main.class);
startActivity(intent);
finish();
} else {
// Error occurred in registration. Get the error
// message
error_msg.setVisibility(View.VISIBLE);
String msg = jObj.getString("error_msg");
error_msg.setText(msg);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Registration Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_LONG).show();
hideDialog();
}
}) {
$stmt->bind_result($id, $unique_id, $name, $email, $encrypted_password, $salt, $created_at, $updated_at);
$user = $stmt->fetch();
$user = $stmt->get_result()->fetch_assoc();