Android:如果满足条件,创建意图吗?

时间:2015-09-26 18:29:12

标签: android android-intent

晚间

目前我的系统允许用户输入他们的用户名和密码,如果输入正确,他们的角色将从数据库中选择并显示在文本视图中。

但是,如果他们的登录详细信息正确,我也会尝试允许用户移动到菜单页面。我的问题是,用户在点击登录按钮时被重定向到主页面,无论他们的详细信息是否正确。我尝试使用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);
    }

    }

1 个答案:

答案 0 :(得分:2)

  

晚间

这不是晚上,现在是夜晚:)

  

我尝试使用if子句包围intent,但是没有任何影响。

您执行此操作的逻辑(我的意思是记录用户)是不正确的。你应该修改你的代码。

首先,AsyncTask不属于Activity类型。因此,名称SigninActivity有点误导。请重新命名,以便更好地了解Android SDK编程。

实现典型登录活动的基本步骤如下所示。请按照步骤进行操作。

  • 创建LoginActivity课程,并在用户在启动器中点击它时,将其注册为AndroidManifest.xml作为应用的默认入口点。
  • onCreate检查用户是否已登录。
  • 如果是,请通过以下方式将她重定向到您的主要活动:

    startActivity(new Intent(context, MainActivity.class));
    
  • 如果不是,她应填写您通过登录活动用户界面为她提供的凭据字段。

  • 按下登录按钮后,显示所谓的“请等待......”消息,让她感觉更好用户体验。与此同时,您正在开始LoginAsyncTask

  • doInBackground联系您的服务器或任何您想要验证她的地方。并返回结果。

  • 在其onPostExecute中,首先隐藏“请等待...”消息,然后告知她她的身份验证。

  • 如果她已成功通过身份验证,请将其重定向到您的主要活动。