MonoDroid Async Webservice Call - PullRequest
       5

MonoDroid Async Webservice Call

0 голосов
/ 24 апреля 2011

Я пытаюсь отобразить представление списка после асинхронного вызова веб-службы, но по какой-то причине этот код не работает .... Есть предложения? Прямо сейчас просто вылетает приложение.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Test.MyWeb;

namespace Test
{
    [Activity(Label = "Favorites")]
    public class FavoritesActivity : ListActivity
    {
        private ProgressDialog d;
        private TextView tv;
        protected override void OnCreate(Bundle bundle)
        {

            base.OnCreate(bundle);

            d = new ProgressDialog(this);
            d.SetTitle("Loading...");
            d.SetMessage("Please wait...");
            d.SetIcon(Resource.Drawable.chef_icon);
            d.Show();



            Test.MyWeb.Daedalus Service = new Daedalus();

            Service.getCategoriesCompleted += Service_OnComplete;
            Service.getCategories();


        }

        private void Service_OnComplete(object s, getCategoriesCompletedEventArgs e)
        {

            try
            {
                d.Hide();

                List<Test.MyWeb.CATEGORY> Categories = e.Result.ToList();
                List<string> cats = new List<string>();

                foreach (Test.MyWeb.CATEGORY Item in Categories)
                {
                    cats.Add(Item.NAME);

                }

                ListAdapter = new ArrayAdapter<string>(this, Resource.Layout.Favorites, cats);

                ListView.TextFilterEnabled = true;

                ListView.ItemClick += delegate(object sender, ItemEventArgs args)
                {
                    // When clicked, show a toast with the TextView text
                    Toast.MakeText(Application, ((TextView)args.View).Text, ToastLength.Short).
                        Show();
                };



            } catch(Exception ex)
            {
                Toast.MakeText(this, ex.Message, ToastLength.Short).Show();

            }
        }

    }
}

1 Ответ

4 голосов
/ 24 апреля 2011

Если это действительно асинхронный вызов, вам нужно изменить пользовательский интерфейс в потоке пользовательского интерфейса, а не в фоновом потоке:

http://mono -android.net / Документация / Руководство / Writing_Responsive_Applications

В любом случае, вы должны найти ошибку в журнале Android:

http://mono -android.net / Документация / Руководство / Android_Debug_Log

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...