Android 用数据库中的信息预填充edittext

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

我正在开发一个android聊天应用程序,我有一个Web服务,它可以操作sql server数据库和移动应用程序,在移动应用程序中,我有片段(主页、编辑配置文件、注销),在编辑配置文件片段中,我希望edittext预先填充数据库中帐户所有者的信息,因此,我将用户登录从应用程序发送到Web服务,Web服务返回一个用户对象,这样我就可以获取他的信息来预填充edittext,下面是Web服务的代码:

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中启用了提示?!不,我没有启用任何提示