晚间
目前我的系统允许用户输入他们的用户名和密码,如果输入正确,他们的角色将从数据库中选择并显示在文本视图中。
但是,如果他们的登录详细信息正确,我也会尝试允许用户移动到菜单页面。我的问题是,用户在点击登录按钮时被重定向到主页面,无论他们的详细信息是否正确。我尝试使用if子句包围intent,但是没有任何影响。
public class SigninActivity extends AsyncTask<String,Void,String>{
private TextView roleField;
private Context context;
public SigninActivity(Context context,TextView roleField) {
this.context = context;
this.roleField = roleField;
}
protected void onPreExecute(){
}
@Override
protected String doInBackground(String... arg0) {
try{
String username = (String)arg0[0];
String password = (String)arg0[1];
String link = "*";
String data = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(username, "UTF-8");
data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8");
URL url = new URL(link);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write( data );
wr.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
// Read Server Response
while((line = reader.readLine()) != null)
{
sb.append(line);
break;
}
return sb.toString();
}
catch(IOException e){
return new String("Exception: " + e.getMessage());
}
}
@Override
protected void onPostExecute(String result){
this.roleField.setText(result);
}
}
登录调用mainactvity页面中的登录构造函数
public void loginPost(View view){
String username = usernameField.getText().toString();
String password = passwordField.getText().toString();
new SigninActivity(this,role).execute(username,password);
if(role!= null){
Intent i = new Intent(this, MainScreen.class);
startActivity(i);
}else{
Intent i = new Intent(this, MainActivity.class);
startActivity(i);
}
}
答案 0 :(得分:2)
晚间
这不是晚上,现在是夜晚:)
我尝试使用if子句包围intent,但是没有任何影响。
您执行此操作的逻辑(我的意思是记录用户)是不正确的。你应该修改你的代码。
首先,AsyncTask
不属于Activity
类型。因此,名称SigninActivity
有点误导。请重新命名,以便更好地了解Android SDK编程。
实现典型登录活动的基本步骤如下所示。请按照步骤进行操作。
LoginActivity
课程,并在用户在启动器中点击它时,将其注册为AndroidManifest.xml
作为应用的默认入口点。onCreate
检查用户是否已登录。如果是,请通过以下方式将她重定向到您的主要活动:
startActivity(new Intent(context, MainActivity.class));
如果不是,她应填写您通过登录活动用户界面为她提供的凭据字段。
按下登录按钮后,显示所谓的“请等待......”消息,让她感觉更好用户体验。与此同时,您正在开始LoginAsyncTask
。
在doInBackground
联系您的服务器或任何您想要验证她的地方。并返回结果。
在其onPostExecute
中,首先隐藏“请等待...”消息,然后告知她她的身份验证。