繁体   English   中英

为什么我在alertDialog.setMessage()上获得空值?

[英]Why am i getting a null value on my alertDialog.setMessage()?

我是从事android应用的完整初学者。 我不知道为什么我的alertDialog框始终显示值的原因。 该代码用于通过检查数据库中的数据进行登录 将不胜感激。

我已将MySql端口从3306更改为3307,因为3306被阻止了。

 public class BackgroundWorker extends AsyncTask<String,Void,String> { Context context; AlertDialog alertDialog; BackgroundWorker (Context ctx) { context = ctx; } @Override protected String doInBackground(String... params) { String type = params[0]; String login_url = "http://192.168.254.106/login.php"; if(type.equals("login")) { try { String user_name = params[1]; String password = params[2]; URL url = new URL(login_url); HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection(); httpURLConnection.setRequestMethod("POST"); httpURLConnection.setDoOutput(true); httpURLConnection.setDoInput(true); OutputStream outputStream = httpURLConnection.getOutputStream(); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8")); String post_data = URLEncoder.encode("user_name","UTF-8")+"="+URLEncoder.encode(user_name,"UTF-8")+"&" +URLEncoder.encode("password","UTF-8")+"="+URLEncoder.encode(password,"UTF-8"); bufferedWriter.write(post_data); bufferedWriter.flush(); bufferedWriter.close(); outputStream.close(); InputStream inputStream = httpURLConnection.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1")); String result=""; String line=""; while((line = bufferedReader.readLine())!= null) { result += line; } bufferedReader.close(); inputStream.close(); httpURLConnection.disconnect(); return result; } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } return null; } @Override protected void onPreExecute() { alertDialog = new AlertDialog.Builder(context).create(); alertDialog.setTitle("Login Status"); } @Override protected void onPostExecute(String result) { alertDialog.setMessage(result); alertDialog.show(); } } 

这是login.php

 <?php require "connection.php"; $user_name = $_POST["user_name"]; $user_pass = $_POST["password"]; $mysql_qry = "select * from account_profiles where userName like '$user_name' and passWord like '$user_pass';"; $result = mysqli_query($conn, $mysql_qry); if(mysqli_num_rows($result) > 0) { echo "Login Success"; } else { echo "Login Failed"; } ?> 

在类构造函数中处理AlertDialog的实例化,而不是在onPreExecute这没有意义,这将解决您的问题。

BackgroundWorker (Context context ) {
    alertDialog = new AlertDialog.Builder(context).create();
}

现在,您还可以删除Context全局变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM