Ici, je initialise obtenir la valeur de l'entrée de l'utilisateur après le clic de btnlog
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
usernameField = (EditText) findViewById(R.id.etUname);
passwordField = (EditText) findViewById(R.id.etUpass);
btnlog = (Button) findViewById(R.id.loginbtn);
btnview = (Button) findViewById(R.id.viewbtn);
reglink = (TextView) findViewById(R.id.reglink);
btnlog.setOnClickListener (new View.OnClickListener(){
@Override
public void onClick(View v){
String u = usernameField.getText().toString();
String p = passwordField.getText().toString();
new loginPost().execute();
}
});
Maintenant, je veux recevoir l'entrée utilisateur de la classe publique et l'encoder, et la variable u et p n'obtient fondamentalement aucune valeur de la classe publique
@Override
protected String doInBackground(String... params) {
try{
String str = "username=" + u + "&password=" + p;
String data = URLEncoder.encode("str", "UTF-8") + "=" +
URLEncoder.encode(str, "UTF-8");
strUrl ="http://10.0.2.2/android/login.php?"+data+"";
Log.d("STR", data);
URL url = new URL (strUrl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.connect();
3 réponses
Vous pouvez le transmettre dans la méthode .execute()
car c'est à cela que sert la conception.
btnlog.setOnClickListener (new View.OnClickListener(){
@Override
public void onClick(View v){
String u = usernameField.getText().toString();
String p = passwordField.getText().toString();
new loginPost().execute(u,p);
}
});
Puis dans votre doInBackground()
@Override
protected String doInBackground(String... params) {
try{
String str = "username=" + params[0] + "&password=" + params[1];
String data = URLEncoder.encode("str", "UTF-8") + "=" +
URLEncoder.encode(str, "UTF-8");
strUrl ="http://10.0.2.2/android/login.php?"+data+"";
Log.d("STR", data);
URL url = new URL (strUrl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.connect();
Mon java n'est pas très courant mais il semble que vous essayez de passer des variables à une asynctask, si tel est le cas, jetez un œil ici, Comment passer des variables dans et hors d'AsyncTasks? Il montre comment passer des variables lors d'un appel .execute ()
Définissez u et p en dehors de onCreate () et déclarez-le public. Vous pouvez maintenant accéder à ces variables depuis une autre classe en
this.p=MainActivity.p;
this.u=MainActivity.u;
De nouvelles questions
java
Java est un langage de programmation de haut niveau. Utilisez cette balise lorsque vous rencontrez des problèmes pour utiliser ou comprendre la langue elle-même. Cette balise est rarement utilisée seule et est le plus souvent utilisée en conjonction avec [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] et [maven].