J'écris un programme générateur de nombres aléatoires pour afficher la sortie toutes les secondes. L'aperçu est que chaque seconde, lorsque le nombre aléatoire change, je voudrais que le nombre aléatoire soit sorti dans la boîte 'EditText'. C'est possible?Utilisation de 'tâches asynchrones' sur Android pour générer un nombre et une sortie aléatoires
J'ai des recherches sur le sujet, mais cela échoue (principalement à cause du fonctionnement de l'async).
Voici le code que je l'ai écrit:
package com.example;
import java.util.Random;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class AsyncTasksActivity extends Activity {
EditText txtMessage;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String ranString = "";
try{
ranString = "";
for(int a = 0; a < 33; a++)
{
Random rn = new Random();
int i = rn.nextInt(256);
ranString = ranString + i + " ";
}
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
txtMessage = (EditText) findViewById(R.id.txtMessage);
txtMessage.setText(ranString);
}
public class runRandomly extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
return null;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
}
@Override
protected void onProgressUpdate(String... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
}
}
}
Dans le cas où vous devez exécuter le code pour assurer qu'il fonctionne, j'ai lieu le code xml ici:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="1">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Null"
/>
<EditText
android:id="@+id/Null"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:inputType="numberDecimal"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Random Key"/>
<EditText
android:id="@+id/txtMessage"
android:layout_width="fill_parent"
android:gravity="center"
android:editable="false" android:layout_height="61dp" android:layout_weight="0.14"/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
Much Merci !
Vous êtes très proche. Juste faire une estimation rapide. Je suis sûr que vous pouvez trouver une meilleure réponse partielle vous-même. Quel code aurait du sens dans doInBackground?Et quel code aurait du sens à l'intérieur de onProgressUpdate? Si vous n'êtes pas à l'aise avec l'écriture d'un code réel, écrivez simplement un pseudo-code de type "commment-out" dans ces deux méthodes. Nous pouvons vous aider à faire le reste. –
doInBackground - signifie que le nombre aléatoire qui s'exécute de manière continue alors que progressUpdate est celui qui envoie la mise à jour à l'interface utilisateur? – Ezylryb
@Ezylryb: regarde ma réponse éditée, utilise ce code. – user370305