Comment l'utiliser Praticable en Mono pour android
Je vais essayer de lern Monodroid! J'ai essayer de ré-écrire le code java en C# et ont un problème: je ne comprends pas comment l'utiliser Praticable.
C'est snipet de code en Java, que je coudn'se traduit pas en C#:
public class RunActivity extends Activity implements OnClickListener
{
...
private Handler mHandler;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.run);
...
mHandler = new Handler();
mHandler.postDelayed(mUpdateGeneration, 1000);
}
private Runnable mUpdateGeneration = new Runnable()
{
public void run()
{
mAdapter.next();
mLifeGrid.setAdapter(mAdapter);
mHandler.postDelayed(mUpdateGeneration, 1000);
}
};
...
Pouvez-vous m'expliquer comment je dois écrire ce code et l'utiliser Praticable?
Cet Exécutable à utiliser pour la mise à jour gridview l'adaptateur et le charger des données à partir de l'adaptateur de contrôle gridview en arrière-plan. Si j'ai essayé la mise à jour de l'adaptateur dans le thread principal? comme ceci(code C#):
mAdapter.next()
mLifeGrid.Adapter = mAdapter;
Thread.Sleep(1000);
Activité est coincé.
Si je ne peux pas utiliser Praticable, comment puis-je mettre en œuvre la mise à jour de carte et gridview dans le nouveau thread?
Si j'utilise C# threading, comme ceci:
...
Thread th = new Thread(new ThreadStart(mUpdatGeneration));
th.Start();
}
public void mUpdateGeneration()
{
mAdapter.next()
mLifeGrid.Adapter = mAdapter;
Thread.Sleep(1000);
}
il génère une erreur "le Système.NullReferenceException"
Merci à tous pour votre aide!
P. S. Désolé pour mon anglais 🙂
Handler
pourrait ne pas être un filetage de classe. Il semble être la classe que vous pouvez utiliser pour poster à l'événement principal de la file d'attente.droite, mais qui a mis en place
Handler
? Si c'est un mono de projet, on ne doit pas l'être à l'aide de Java idiomes.Xamarin n', sans doute directement de la cartographie correspondante (Java) Android classe. Cela met une certaine limite supérieure sur la façon dont beaucoup de sens à se plaindre du manque d'un
Handler.PostDelayed(Action)
fait.ah, je vois. Les bons points.
OriginalL'auteur Beyka | 2013-02-20
Vous devez vous connecter pour publier un commentaire.
Il semble que il ya une surcharge de
PostDelayed()
qui prend unAction
paramètre, de sorte que le moyen simple serait de faire quelque chose comme ceci:(Disclaimer: je n'ai jamais réellement utilisé MonoDroid, mais il devrait être valide.)
Il n'est pas valide comme il n'a pas exactement la compilation, ou que la réponse n'a pas vraiment aidé à vous en avant? (Si il y a juste un problème mineur, je tiens à le fixer dans la réponse.)
il n'est pas vraiment pour quelques raisons: Gestionnaire de.PostDelay a 2 paramètres (d'Action, de longue delayMillis). Si j'ai mis mAdapter.next() et mLifeGrid.Adaptateur = mAdapter à une Action de délégué - j'ai eu du Système.NullReferenceException. Si vous le voulez je peut télécharger le code source de github et que vous essayez de résoudre le problème. Je pense que - cette difficulté réelle pour monodroid développeurs.
Hm, ça semble être un problème différent. Si il y a un
PostDelayed(Action)
, c'est votre réponse à ce que l'utiliser à la place d'un anonyme intérieur de la classe.Ce que je comprends - il n'y a pas d'implémentation de Runnable sur Mono Pour Android(forte possibilité que je me trompe!). Dans Xamarin docs pour travailler avec des threads à l'aide de la Tâche(). Dans mon cas, la Tâche de travail. Xamarin multitâche
OriginalL'auteur millimoose
Voici comment vous traduire l'Exécutable de mise en œuvre en c#
OriginalL'auteur Radu Simionescu