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 回答
基本上问题在于服务器响应,因为它确实返回了一些javascript以及成功消息 . 来自@ cricket_007的指导,@ IshitaSinha实际上帮助我解决了这个问题 .
解决方案:使用免费托管网站时,可以添加其他javascript /或消息 . 检查整个响应,然后将其与实际响应进行比较