我正在做一个简单的登录应用程序,用户只需登录,当这样时,将显示所有详细信息。这是通过php文件和SQL数据主机数据库完成的。
当我输入不正确的凭据时,它会通过提示用户输入错误来正常工作,但是当我给它正确的用户名和密码时,它会重新加载页面并且不会将我带到MainActivity。我尝试了几种方法并且没有任何运气来改变代码。
这是发送位于reponse.listener中的php的代码
if (success) {
String name = "test";//jsonResponse.getString("name");
String surname = "test";//jsonResponse.getString("surname");
String username = "test";//jsonResponse.getString("username");
String email = "test";//jsonResponse.getString("email");
int phone = 123;//jsonResponse.getInt("phone");
int age = 23;//jsonResponse.getInt("age");
我在这里调用此片段中的其他活动,并在正确的位置分配详细信息。
Intent intent = new
Intent(getActivity(),MainActivity.class);
intent.setClass(getActivity(), MainActivity.class);
intent.putExtra("name", name);
intent.putExtra("surname", surname);
intent.putExtra("username", username);
intent.putExtra("age", age);
getActivity().startActivity(intent);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); //create an error message
builder.setMessage("Login Failed")
.setNegativeButton("Retry",null) //click retry to retry registration
.create()
.show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
这是我的PHP代码,位于我的托管sql数据库
<?php
$con = mysqli_connect("mysql4.000webhost.com", "a3826656_user", "", "a3826656_data");
$username = $_POST["username"];
$password = $_POST["password"];
$statement = mysqli_prepare($con, "SELECT * FROM user WHERE username = ? AND password = ?");
mysqli_stmt_bind_param($statement, "ss", $username, $password);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $userID, $name, $surname, $username, $password, $email, $phone, $age);
$response = array();
$response["success"] = false;
while(mysqli_stmt_fetch($statement)){
$response["success"] = true;
$response["name"] = $name;
$response["surname"] = $surname;
$response["age"] = $age;
$response["username"] = $username;
$response["password"] = $password;
$response["email"] = $email;
$response["phone"] = $phone;
}
echo json_encode($response);
?>
这是LoginRequest
public class LoginRequest extends StringRequest {
private static final String REGISTER_REQUEST_URL = "http://lukecassar.net23.net/Login.php";
private Map<String, String> params;
public LoginRequest(String username, String password, Response.Listener<String> listener){
super(Request.Method.POST, REGISTER_REQUEST_URL, listener,null);
params = new HashMap<>();
params.put("username", username);
params.put("password", password);
}
@Override
public Map<String, String> getParams() {
return params;
}
}
清单代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="mt.edu.mcast.navigationfragmentsexample">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
有没有办法解决这个问题? 感谢。
答案 0 :(得分:0)
尝试使用startActivity(intent)
代替getActivity().startActivity(intent)
并删除此行intent.setClass(getActivity(), MainActivity.class)
,因为您已经在意图构造函数Intent(getActivity(),MainActivity.class)
答案 1 :(得分:0)
问题是该片段是我正在调用的活动的一部分,所以因为我正在调用相同的活动,所以它只是令人耳目一新。
我只是创建了一个其他活动并调用了新意图。
感谢@Masum,我得出了这个结论。感谢