Android 用数据库中的信息预填充edittext
我正在开发一个android聊天应用程序,我有一个Web服务,它可以操作sql server数据库和移动应用程序,在移动应用程序中,我有片段(主页、编辑配置文件、注销),在编辑配置文件片段中,我希望edittext预先填充数据库中帐户所有者的信息,因此,我将用户登录从应用程序发送到Web服务,Web服务返回一个用户对象,这样我就可以获取他的信息来预填充edittext,下面是Web服务的代码:Android 用数据库中的信息预填充edittext,android,android-fragments,android-edittext,Android,Android Fragments,Android Edittext,我正在开发一个android聊天应用程序,我有一个Web服务,它可以操作sql server数据库和移动应用程序,在移动应用程序中,我有片段(主页、编辑配置文件、注销),在编辑配置文件片段中,我希望edittext预先填充数据库中帐户所有者的信息,因此,我将用户登录从应用程序发送到Web服务,Web服务返回一个用户对象,这样我就可以获取他的信息来预填充edittext,下面是Web服务的代码: public synchronized void modifierProfil(String logi
public synchronized void modifierProfil(String login) {
try {
stmt = con.prepareStatement("Select * from Utilisateurs where login = '" + login + "';");
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
Utilisateur user = new Utilisateur();
user.setLogin(rs.getString("login"));
user.setPassword(rs.getString("password"));
user.setEmail(rs.getString("email"));
user.setDateNaissance(rs.getDate("dateNaissance"));
user.setNomPersonne(rs.getString("nomPersonne"));
user.setPrenomPersonne(rs.getString("prenomPersonne"));
user.setNumTelephone(rs.getInt("numTelephone"));
user.setPhotoProfil(rs.getString("photoProfil"));
user.setSexe(rs.getString("sexe"));
env.setObjet(user);
reponse = "ok";
}
} catch (Exception ex) {
reponse = "erreur";
} finally {
try {
env.setAction(reponse);
TCPConnection.send(env, acceptedSocket);
acceptedSocket.close();
} catch (IOException ex1) {
}
}
}
以下是配置文件片段代码:
public static class ProfilFrag extends Fragment implements OnClickListener {
ImageView photoProfil;
EditText username, email, password, nomPrenom;
String UserName, Pwd, Email;
Button submit, changerPhoto;
ModifierProgress connection ;
private DatagramPacket sendP;
private DatagramPacket receiveP;
private DatagramSocket socket;
private int serverPort;
private String send;
public static String serverIP;
private byte data2[];
private SharedPreferences settings;
String rdata;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
connection = new ModifierProgress();
connection.execute();
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
username = (EditText) getView().findViewById(R.id.etLogin);
email = (EditText) getView().findViewById(R.id.edEmail);
password = (EditText) getView().findViewById(R.id.edPassword);
nomPrenom = (EditText) getView().findViewById(R.id.edNomPrenom);
submit = (Button) getView().findViewById(R.id.bSubmit);
photoProfil = (ImageView) getView().findViewById(R.id.largeThumbnailView);
changerPhoto = (Button) getView().findViewById(R.id.btnChanger);
submit.setOnClickListener(this);
changerPhoto.setOnClickListener(this);
data2 = new byte[100];
serverPort = 6500;
settings = PreferenceManager
.getDefaultSharedPreferences(Home.current);
serverIP = settings.getString("serverIP", Connection.ipServer);
Log.i("Login", serverIP);
}
private class ModifierProgress extends AsyncTask<Void, String, Void> {
@Override
protected Void doInBackground(Void... params) {
try {
***String un*** = username.getText().toString();
Envoyable env = new Envoyable(un, "modifierProfil");
Socket sock = TCPConnection.send(env);
Log.i("modifierProfil", "modification Profil");
env = (Envoyable) TCPConnection.Receive(sock);
String rep = env.getAction();
Log.i("modifierProfil", "received msg from server: " + rep);
publishProgress("modification");
if (rep.equalsIgnoreCase("ok")){
Utilisateur m = (Utilisateur) env.getObjet();
Utils.Helper.saveUser(settings, "m", m);
getActivity().finish();
UrlImageViewHelper.setUrlDrawable(photoProfil, m.getPhotoProfil());
username.setText(m.getLogin());
password.setText(m.getPassword());
email.setText(m.getEmail());
}
else if (rep.equalsIgnoreCase("erreur")){
publishProgress("err");
Toast.makeText(getActivity().getApplicationContext(), "Une erreur s'est produite", Toast.LENGTH_LONG).show();
}
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
}
public静态类ProfilFrag扩展片段实现OnClickListener{
ImageView photoProfil;
EditText用户名、电子邮件、密码、nomPrenom;
字符串用户名、密码、电子邮件;
按钮提交,更改照片;
修改器推进连接;
私有数据包sendP;
私有数据包接收;
专用DatagramSocket套接字;
专用int服务器端口;
私有字符串发送;
公共静态字符串服务器IP;
专用字节数据2[];
私有共享参考设置;
字符串rdata;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
连接=新修改器进程();
connection.execute();
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
username=(EditText)getView().findViewById(R.id.etLogin);
email=(EditText)getView().findViewById(R.id.edEmail);
密码=(EditText)getView().findViewById(R.id.edPassword);
nomPrenom=(EditText)getView().findViewById(R.id.edNomPrenom);
submit=(按钮)getView().findViewById(R.id.bSubmit);
photoProfil=(ImageView)getView().findViewById(R.id.largeThumbnailView);
changerPhoto=(按钮)getView().findViewById(R.id.btnChanger);
submit.setOnClickListener(这个);
changerPhoto.setOnClickListener(这个);
数据2=新字节[100];
服务器端口=6500;
设置=首选项管理器
.GetDefaultSharedReferences(Home.current);
serverIP=settings.getString(“serverIP”,Connection.ipServer);
Log.i(“登录”,serverIP);
}
私有类ModifierProgress扩展异步任务{
@凌驾
受保护的Void doInBackground(Void…参数){
试一试{
***字符串un***=username.getText().toString();
Envoyable env=新的Envoyable(联合国,简称“modifierProfil”);
Socket sock=TCPConnection.send(env);
Log.i(“修改档案”、“修改档案”);
env=(可环境的)TCPConnection.Receive(sock);
字符串rep=env.getAction();
Log.i(“modifierProfil”,“从服务器收到消息:“+rep”);
出版进度(“修改”);
如果(代表同等信号情况(“正常”)){
利用率m=(利用率)环境getObjet();
Utils.Helper.saveUser(设置“m”,m);
getActivity().finish();
setUrlDrawable(photoProfil,m.getPhotoProfil());
username.setText(m.getLogin());
password.setText(m.getPassword());
email.setText(m.getEmail());
}
否则如果(代表同等信号情况(“错误”)){
出版进度(“err”);
Toast.makeText(getActivity().getApplicationContext(),“Une erreur s'est produite”,Toast.LENGTH\u LONG.show();
}
}捕获(IOE异常){
e、 printStackTrace();
}catch(classnotfounde异常){
e、 printStackTrace();
}
返回null;
}
}
属性“un”总是获取空值,即使直接在其上放置值,edittext也不会预先填充。
那么问题出在哪里呢?你在打电话
connection.execute()
在OnCreate方法中,不要调用它们的。在找到所有edittext和按钮的ID后调用它。也许您的xml中启用了提示?!不,我没有启用任何提示