Android Studio,不断加载相同的片段

时间:2016-04-30 17:00:59

标签: php android android-fragments android-activity

我正在做一个简单的登录应用程序,用户只需登录,当这样时,将显示所有详细信息。这是通过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>

有没有办法解决这个问题? 感谢。

2 个答案:

答案 0 :(得分:0)

尝试使用startActivity(intent)代替getActivity().startActivity(intent)并删除此行intent.setClass(getActivity(), MainActivity.class),因为您已经在意图构造函数Intent(getActivity(),MainActivity.class)

上定义了该行

答案 1 :(得分:0)

问题是该片段是我正在调用的活动的一部分,所以因为我正在调用相同的活动,所以它只是令人耳目一新。

我只是创建了一个其他活动并调用了新意图。

感谢@Masum,我得出了这个结论。感谢