Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 处理程序(ImageView)出现问题_Android_Handler - Fatal编程技术网

Android 处理程序(ImageView)出现问题

Android 处理程序(ImageView)出现问题,android,handler,Android,Handler,我想显示两个图像(一个在连接时,第二个在断开连接时),我正在使用处理程序来处理,但是,我没有显示这两个图像中的任何一个,不知道为什么: private Runnable handleUpdateStatus = new Runnable() { Boolean mRegistered; public void run() { ImageView statusImageDisplay = (ImageVi

我想显示两个图像(一个在连接时,第二个在断开连接时),我正在使用处理程序来处理,但是,我没有显示这两个图像中的任何一个,不知道为什么:

private Runnable handleUpdateStatus = new Runnable() 
    {     
        Boolean mRegistered;

        public void run()
        {
            ImageView statusImageDisplay = (ImageView)findViewById(R.id.connected);
            if (mRegistered)
            {
                statusImageDisplay.setImageDrawable(getResources().getDrawable(R.drawable.connected));
                Log.i("CONNECTED","IMAGE SET");
            }
            else
            {   
                statusImageDisplay.setImageDrawable(getResources().getDrawable(R.drawable.disconnected));
Log.i("DISCONNECTED","IMAGE SET");
                }
            }

    };  
更改图像代码摘录:

    public void onRegistrationDone(String localProfileUri, long expiryTime) {
            updateStatus("Enregistré au serveur.");
            Log.d("SUCCEED","Registration DONE");
            mRegistered = true; 
            mRegistrationUpdateHandler.removeCallbacks(handleUpdateStatus);
            mRegistrationUpdateHandler.postDelayed(handleUpdateStatus, 4000);
}
注册失败时该怎么办?此代码:

public void onRegistrationFailed(String localProfileUri, int errorCode,String errorMessage) {
updateStatus("Enregistrement échoué.  Veuillez vérifier vos paramètres.");
Log.d("ERROR REGISTRATION",errorMessage);

mRegistered = false;
mRegistrationUpdateHandler.removeCallbacks(handleUpdateStatus);
mRegistrationUpdateHandler.postDelayed(handleUpdateStatus, 2000);
     }
XML:


你知道如何解决这个问题吗? 非常感谢。

您(必须)将
mRegistered
变量声明两次,并且在设置全局变量(在
活动中声明的变量)的值时,检查另一个变量的值,该变量在
handleUpdateStatus Runnable中声明

您应该稍微清理一下代码:

  • 删除
    mrregistration
    声明 从您的
    Runnable
    实现中,
    //布尔值注册
  • 将图像设置为可通过资源绘制 身份证
它将发挥作用:

private boolean mRegistered;
private Runnable handleUpdateStatus = new Runnable()
{
    public void run()
    {
        ImageView statusImageDisplay = (ImageView) findViewById(R.id.connected);
        if (mRegistered)
        {
            statusImageDisplay.setImageResource(R.drawable.connected);
            Log.i("CONNECTED", "IMAGE SET");
        }
        else
        {
            statusImageDisplay.setImageResource(R.drawable.disconnected);
            Log.i("DISCONNECTED", "IMAGE SET");
        }
    }
};
这就是您需要更改的全部内容(假设您的布局中确实包含一个id
已连接的图像

更新
关于
mrRegistrationUpdateHandler
,您应该将其声明为
活动的全局变量(final或在
onCreate
方法中初始化):


@你更正代码了吗?(您编辑了它:\)我已将xml代码格式化为更具可读性,并替换了空元素的
关闭标记(使用
)。您可以通过单击“已编辑”单词后面的时间链接来查看修改。@rekaszeru:Clear;)。但你知道问题的根源吗\会发生什么?是否调用了run方法(Log appers)?如果在
Runnable
类中未声明mRegistered成员,则这是正确的!但事实是:你应该移除它!请参阅我的帖子以获得一个工作代码:)非常感谢您的回答,但请注意:handleUpdateStatus变量是否应该像private Handler mrRegistrationUpdateHandler一样将其定义为全局变量?onRegistrationDone和onRegistrationFailed函数使用它。(因为它一直不工作)我这样做了,并认为代码中也有这样的功能。请参考我的更新。你是个天才。非常感谢,现在可以用了。我的梦想是成为一名像你一样的优秀开发人员:)(这不是一种恭维,因为你对自己的答案很有耐心,而且你总是试图在stackoverflow中提供帮助,你的答案总是很详细)。谢谢。不客气:)我在这里也学到了很多,通过这些问题,我仍然在做/训练(Android还不是教材,所以我想这是收集最佳实践的最佳地方)。
private boolean mRegistered;
private Runnable handleUpdateStatus = new Runnable()
{
    public void run()
    {
        ImageView statusImageDisplay = (ImageView) findViewById(R.id.connected);
        if (mRegistered)
        {
            statusImageDisplay.setImageResource(R.drawable.connected);
            Log.i("CONNECTED", "IMAGE SET");
        }
        else
        {
            statusImageDisplay.setImageResource(R.drawable.disconnected);
            Log.i("DISCONNECTED", "IMAGE SET");
        }
    }
};
private final Handler mRegistrationUpdateHandler = new Handler();
private Handler mRegistrationUpdateHandler;