Java 如何使用JSON和PHP将数据从数据库显示到android应用程序文本视图?

Java 如何使用JSON和PHP将数据从数据库显示到android应用程序文本视图?,java,php,android,json,Java,Php,Android,Json,我有一个连接到数据库的php文件。当它从表中获取所选用户数据时,它将显示在PHP中的文本框中。这似乎很有效。问题是,当我和我的朋友尝试连接并显示到android应用程序中的文本视图时,它不起作用!这里有什么问题吗?我试着在上面添加一些JSON,但我不明白!我在这里附上了我的PHP文件和java代码 爪哇: 包sscr.stag; 导入java.util.ArrayList; 导入java.util.List; 导入org.apache.http.NameValuePair; 导入org.apac

我有一个连接到数据库的php文件。当它从表中获取所选用户数据时,它将显示在PHP中的文本框中。这似乎很有效。问题是,当我和我的朋友尝试连接并显示到android应用程序中的文本视图时,它不起作用!这里有什么问题吗?我试着在上面添加一些JSON,但我不明白!我在这里附上了我的PHP文件和java代码

爪哇:

包sscr.stag;
导入java.util.ArrayList;
导入java.util.List;
导入org.apache.http.NameValuePair;
导入org.apache.http.message.BasicNameValuePair;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入android.app.Activity;
导入android.app.ProgressDialog;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.util.Log;
导入android.widget.EditText;
导入android.widget.TextView;
导入android.widget.Toast;
公共类AdminProfile扩展活动{
文本视图fname;
文本视图lname;
文本视图名称;
EditText用户管理员,passadmin;
//进度对话框
私人对话;
//创建JSON解析器对象
JSONParser JSONParser=新的JSONParser();
//配置文件JSON url
私有静态最终字符串ADMIN_PROFILE=”http://www.stagconnect.com/StagConnect/admin/arrayProfile.php";
//所有JSON节点名称
私有静态最终字符串TAG_LNAME=“last_name”;
私有静态最终字符串标记\u FNAME=“first\u name”;
专用静态最终字符串标记\u DESIGNATION=“DESIGNATION”;
私有静态最终字符串标记_SUCCESS=“SUCCESS”;
私有静态最终字符串标记_MESSAGE=“MESSAGE”;
私有静态最终字符串标记_POST=“POST”;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.adminprofile);
fname=(TextView)findViewById(R.id.fname);
lname=(TextView)findViewById(R.id.lname);
名称=(TextView)findViewById(R.id.名称);
useradmin=(EditText)findViewById(R.id.useradmin);
passadmin=(EditText)findViewById(R.id.adminpass);
//在后台线程中加载配置文件
新建LoadProfile().execute();
}
类LoadProfile扩展了异步任务{
布尔失败=假;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pDialog=newprogressdialog(AdminProfile.this);
pDialog.setMessage(“正在加载配置文件。请稍候…”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(真);
pDialog.show();
}
/**
*在后台线程中获取用户详细信息
* */
受保护的字符串doInBackground(字符串…args){
成功;
字符串username=useradmin.getText().toString();
字符串密码=passadmin.getText().toString();
字符串名称=args[0];//未使用变量
字符串pwd=args[1];//未使用变量
新建LoadProfile().execute(用户名、密码);
试一试{
List params=new ArrayList();
添加(新的BasicNameValuePair(“用户名”,用户名));
添加(新的BasicNameValuePair(“密码”,password));
JSONObject json=jsonParser.makeHttpRequest(
管理员配置文件,“POST”,参数);
//检查日志中的json响应
Log.d(“加载配置文件”,json.toString());
//json成功标记
success=json.getInt(TAG_success);
如果(成功==1){
//已成功接收用户详细信息
JSONArray productObj=json
.getJSONArray(TAG_POST);//JSON数组
//从JSON数组中获取第一个产品对象
JSONObject x=productObj.getJSONObject(0);
//找到具有此用户名的用户信息
//编辑文本
fname=(TextView)findViewById(R.id.fname);
lname=(TextView)findViewById(R.id.lname);
名称=(TextView)findViewById(R.id.名称);
//在编辑文本中显示产品数据
setText(x.getString(TAG_fname));
setText(x.getString(TAG_lname));
名称.setText(x.getString(TAG_名称));
}否则{
//找不到用户名为的用户信息
}
}捕获(JSONException e){
e、 printStackTrace();
}
return json;//此处错误:无法将json解析为变量
}
} 
受保护的void onPostExecute(字符串文件\u url){
//获得所有详细信息后关闭对话框
pDialog.disclose();
/*此处错误:无法解析x*/fname.setText(x.getString(TAG_fname));
setText(x.getString(TAG_lname));
名称.setText(x.getString(TAG_名称));
}
}
}
php:



您正在从后台线程调用的
doInbackground
访问/更新ui。你不能那样做

String username = useradmin.getText().toString();
String password = passadmin.getText().toString();
new LoadProfile().execute(username,password); // can pass param to doInbackground directly
要访问参数

protected String doInBackground(String... args) {
String name = args[0];
String pwd = args[1] ;
onCreate中的所有初始化

fname = (TextView) findViewById(R.id.fname);
lname = (TextView) findViewById(R.id.lname);
designation = (TextView) findViewById(R.id.designation);
您可以在
doInbackground

return json;
现在在
onPostExecute
解析json并更新ui

fname.setText(x.getString(TAG_FNAME));
lname.setText(x.getString(TAG_LNAME));
designation.setText(x.getString(TAG_DESIGNATION));

很抱歉迟了回复!嗯。。。你知道我的朋友和我只是java的初学者
return json;
fname.setText(x.getString(TAG_FNAME));
lname.setText(x.getString(TAG_LNAME));
designation.setText(x.getString(TAG_DESIGNATION));