ViewFlipper的奇怪问题

时间:2011-05-02 01:02:13

标签: android viewflipper

我有一个ViewFlipper,显示2个imageview(断开时为红色,连接时为绿色),但是,我有一个奇怪的结果:有时红色图像在我连接时显示,它会像这样切换:红色-green-并返回红色(即使我已连接)。 这是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 个答案:

答案 0 :(得分:3)

我会以不同的方式做到这一点。如果这只是显示不同图像(红色/绿色)的问题,我会使用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));
        }
    }
};