Странная проблема с ViewFlipper - PullRequest
0 голосов
/ 02 мая 2011

У меня есть ViewFlipper, который показывает 2 изображения (красный при отключении и зеленый при подключении), однако, у меня странный результат: иногда красное изображение отображается, когда я подключен, он переключается следующим образом: красный -зеленый и возвращает красный (даже когда я подключен). Вот код JAVA:

public void onRegistrationDone(String localProfileUri, long expiryTime) {

                        updateStatus("Enregistré au serveur.");
                        Log.d("SUCCEED","Registration DONE");

                        final ViewFlipper flipper = (ViewFlipper)findViewById(R.id.flipper);
                        flipper.postDelayed(new Runnable() {
                        public void run() {
                        flipper.showNext();
                            }
                        },2000);}

Просмотр начинается с красного изображения, затем при подключении (и через 2 секунды) обычно показывается следующее изображение.

В чем может быть проблема? Большое спасибо.

РЕДАКТИРОВАТЬ: XML-файл (обработчик)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">

<TextView
  android:id="@+id/sipLabel"
  android:textSize="20sp"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  />
  <ImageView android:id="@+id/status"  android:layout_below="@id/sipLabel" 
  android:layout_width="fill_parent" android:scaleType="center"
        android:layout_height="fill_parent" android:layout_weight="0.35" android:gravity="center"

         />
        </LinearLayout>

1 Ответ

3 голосов
/ 11 мая 2011

Я бы сделал это по-другому. Если это просто вопрос отображения другого изображения (красного / зеленого), я бы использовал элемент управления ImageView UI для отображения этого изображения. А для отложенного обновления дисплея вы можете использовать Handler. Примерно так:

public void onRegistrationDone(String localProfileUri, long expiryTime) 
{
    updateStatus("Enregistré au serveur.");
    Log.d("SUCCEED","Registration DONE");

    mRegistered = true;
    mRegistrationUpdateHandler.removeCallbacks(handleUpdateStatus);
    mRegistrationUpdateHandler.postDelayed(handleUpdateStatus, 2000);
}

public void onRegistrationLost()
{
    mRegistered = false;
    mRegistrationUpdateHandler.removeCallbacks(handleUpdateStatus);
    mRegistrationUpdateHandler.postDelayed(handleUpdateStatus, 2000);
}

private Runnable handleUpdateStatus = new Runnable() 
{     
    public void run()
    {
        ImageView statusImageDisplay = (ImageView)findViewById(R.id.statusImage);
        if (mRegistered)
        {
            statusImageDisplay.setImageDrawable(getResources().getDrawable(R.drawable.imageGreen));
        else
        {
            statusImageDisplay.setImageDrawable(getResources().getDrawable(R.drawable.imageRed));
        }
    }
};  
...