Поместить объект в сообщение обработчика

Самый сжатый способ, который не упоминается ни в одном из других ответов, вероятно, следующий:

>>> d = {2:3, 1:89, 4:5, 3:0}
>>> dict(sorted(d.items()))
{1: 89, 2: 3, 3: 0, 4: 5}
20
задан Tsimmi 9 June 2010 в 09:31
поделиться

2 ответа

Я бы использовал AsyncTask для такого рода операций. Это позволяет вам подключаться к потоку пользовательского интерфейса для таких вещей, как обновления прогресса и после завершения загрузки. В приведенном ниже примере показано, как это следует делать:

class GetImageTask extends AsyncTask<String, int[], Bitmap> {

  @Override
  protected Bitmap doInBackground(String... params) {
    Bitmap bitmap = null;

    // Anything done here is in a seperate thread to the UI thread 
    // Do you download from here

    // If you want to update the progress you can call
    publishProgress(int progress); // This passes to the onProgressUpdate method

    return bitmap; // This passes the bitmap to the onPostExecute method
  }

  @Override
  protected void onProgressUpdate(Integer... progress) {
    // This is on your UI thread, useful if you have a progressbar in your view
  }

  @Override
  protected void onPostExecute(Bitmap bitmapResult) {
    super.onPostExecute(bitmapResult);
    // This is back on your UI thread - Add your image to your view
    myImageView.setImageBitmap(bitmapResult);
  }
}

Надеюсь, что это поможет

4
ответ дан 29 November 2019 в 22:31
поделиться

Во-первых: Где именно вы получаете исключение? При помещении экземпляра в бандл или при его извлечении?

Я думаю, вы путаете понятия. При создании пучка вы пишете

b.putParcelable("MyObject", (Parcelable) object);

То есть вы присваиваете экземпляр "objet" ключу "MyObject". Но при извлечении экземпляра вы пишете:

MyObject objectRcvd = (MyObject) msg.getData().getParcelable("IpTile");

Здесь вы извлекаете экземпляр из ключа "IpTile". Обратите внимание, что "IpTile" != "MyObject". Попробуйте использовать следующее для получения объекта:

MyObject objectRcvd = (MyObject) msg.getData().getParcelable("MyObject");

или наоборот, замените код, который помещает экземпляр в пакет, следующим:

b.putParcelable("IpTile", (Parcelable) object);

Еще несколько моментов для проверки:

  • Реализует ли класс MyObject Parcelable? (полагаю, что да, иначе вы бы не смогли скомпилировать)
  • Содержит ли переменная object экземпляр, реализующий Parcelable?
7
ответ дан 29 November 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: