首页 文章

成功登录后无法导航到Activity - Android排球

提问于
浏览
-2

Issue

从服务器成功登录验证后,无法打开新活动 . 活动保留在登录活动中

Background

我想在这里实现的是在用户登录成功后打开“欢迎”活动 . 服务器正确验证用户登录并显示Toast,但不会打开活动

Code

private static final String LOGIN_URL = "<myURL>/login.php";

    public static final String KEY_LOGUSERNAME = "loUname";
    public static final String KEY_LOGPASSWORD = "loPass";

    EditText LogUser, LogPass;
    Button btnsLogin;

    String loUser, loPassword;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        initalizevars();
        btnsLogin.setOnClickListener(this);
    }

    public void initalizevars() {
        LogUser = (EditText) findViewById(R.id.etLogUser);
        LogPass = (EditText) findViewById(R.id.etLogPass);
        btnsLogin = (Button) findViewById(R.id.btnLogin);
    }

    private void login() {
        loUser = LogUser.getText().toString().trim();
        loPassword = LogPass.getText().toString().trim();

        StringRequest stringRequest1 = new StringRequest(Request.Method.POST, LOGIN_URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                if(response.trim().equals("Success"))
                {
                    Toast.makeText(Login.this,response,Toast.LENGTH_LONG).show();
                    openProfile();
                }else
                {
                    Toast.makeText(Login.this,response,Toast.LENGTH_LONG).show();
                }
            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(Login.this,error.toString(),Toast.LENGTH_LONG).show();
            }
        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> map = new HashMap<String, String>();
                map.put(KEY_LOGUSERNAME, loUser);
                map.put(KEY_LOGPASSWORD, loPassword);
                return map;
            }

        };
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest1);

    }

    private void openProfile() {
        Intent i = new Intent(this,Welcome.class);
        startActivity(i);
    }


    @Override
    public void onClick(View v) {
        if (v == btnsLogin) {
            login();
        }

    }

成功验证后,服务器响应中将显示Toast

What i tried

我尝试将Intent更改为以下

Intent i = new Intent(Login.this,Welcome.class);
startActivity(i);

但没有运气 . 我陷入困境,无法弄清楚哪里出了什么问题 .

请求你的帮助,让我朝着正确的方向前进 .

谢谢

EDIT 我将if条件修改为更有意义并调试

if (response.trim().equals("Success")) {
                    Toast.makeText(Login.this, response + " Right", Toast.LENGTH_LONG).show();
                    openProfile();
                } else {
                    Toast.makeText(Login.this, response + " Wrong", Toast.LENGTH_LONG).show();
                    openProfile();
                }

正如用户@ user1232726所建议的那样,正在考虑else部分并且打开活动,但不应该是这种情况 .

我的login.php输出

Success 
<!-- Hosting24 Analytics Code -->
<script type="text/javascript" src="http://stats.hosting24.com/count.php"></script> 
<!-- End Of Analytics Code -->

1 回答

  • 0

    基本上问题在于服务器响应,因为它确实返回了一些javascript以及成功消息 . 来自@ cricket_007的指导,@ IshitaSinha实际上帮助我解决了这个问题 .

    解决方案:使用免费托管网站时,可以添加其他javascript /或消息 . 检查整个响应,然后将其与实际响应进行比较

相关问题