Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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变量在AsyncTask中交换值_Android_Variables_Android Asynctask_Swap - Fatal编程技术网

Android变量在AsyncTask中交换值

Android变量在AsyncTask中交换值,android,variables,android-asynctask,swap,Android,Variables,Android Asynctask,Swap,我有一个显示服务器状态的程序(无论是在线还是离线)。我放了一个微调器,向用户显示它的加载,在AsyncTask中,我关闭在线/离线图像,在加载时打开微调器,在加载完成时做相反的事情。代码完成了它的工作,但我觉得它是由一些小故障完成的,可能会在以后的工作中破坏它,所以我想现在就修复它。基本上,发生的是在线/离线图像的变量和微调器交换值的变量。我不知道为什么 这是我的密码: public View background; public View status; public View loading

我有一个显示服务器状态的程序(无论是在线还是离线)。我放了一个微调器,向用户显示它的加载,在AsyncTask中,我关闭在线/离线图像,在加载时打开微调器,在加载完成时做相反的事情。代码完成了它的工作,但我觉得它是由一些小故障完成的,可能会在以后的工作中破坏它,所以我想现在就修复它。基本上,发生的是在线/离线图像的变量和微调器交换值的变量。我不知道为什么

这是我的密码:

public View background;
public View status;
public View loading;

class CheckStatusTask extends AsyncTask<Void, Void, Boolean> { 

    //show loading
    protected void onPreExecute(){
        status.setVisibility(View.VISIBLE);<-- this shows the spinner but should show online/offline
        //loading.setVisibility(View.INVISIBLE);<-- this shows the online/offline but should show the spinner
    }

    //check if server is online
    protected Boolean doInBackground(Void... params) {
        return CheckStatus.check();
    }

    //set status bar to offline if flag is false
    protected void onPostExecute(Boolean flag) {
        status.setVisibility(View.INVISIBLE);<-- this shows the spinner but should show online/offline
        //loading.setVisibility(View.VISIBLE);<-- this shows the online/offline but should show the spinner
        if(!flag){
            background.setBackgroundResource(R.layout.offline);
            status.setBackgroundResource(R.drawable.offline);<-- correct 
        }
    }

}

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        background = findViewById(R.id.status);
        status = findViewById(R.id.image); 
        loading = findViewById(R.id.loading);
        new CheckStatusTask().execute();
    }
公众视野背景;
公众舆论状况;
公众视图加载;
类CheckStatusTask扩展异步任务{
//显示加载
受保护的void onPreExecute(){
status.setVisibility(View.VISIBLE);
通过这条线,您可以将线性布局的背景设置为
res/layout/
文件夹中的可绘制形状

可绘制资源,如形状可绘制资源,应放在
res/drawable/
文件夹中。将其存储在布局文件夹中会混淆资源的R.id值。我不知道问题以这种方式出现的确切原因。但是将那些online.xml和offline.xml移到
res/drawa中ble/
并删除
res/layout/
中的那些应该可以修复它

移动文件后,将上面的行更改为:

android:background="@drawable/online"
有关xml可绘制资源的更多信息,请参阅

通过这条线,您可以将线性布局的背景设置为
res/layout/
文件夹中的可绘制形状

可绘制资源,如形状可绘制资源,应放在
res/drawable/
文件夹中。将其存储在布局文件夹中会混淆资源的R.id值。我不知道问题以这种方式出现的确切原因。但是将那些online.xml和offline.xml移到
res/drawa中ble/
并删除
res/layout/
中的那些应该可以修复它

移动文件后,将上面的行更改为:

android:background="@drawable/online"

有关xml可绘制资源的更多信息,请参阅。

在这一行中
android:background=“@layout/online”
layout/online
指向什么?通过将版面资源设置为线性布局的背景,您试图实现什么?online指向一个图像,而drawable offline指向另一个图像。这很好,在添加微调器之前,我已经在其中了。我唯一的问题是状态and在将变量设置为可见和不可见时加载变量,因为它们被交换。如果它是一个图像,它看起来应该是
@drawable/online
而不是
@layout/online
,它将从布局文件夹中获取
online.xml
文件。另外,尝试注释掉AsyncTask.start()现在,在findViewById()调用之后立即添加这个
status.setVisibility(View.INVISIBLE);
。如果这样做正确地隐藏了状态,或者状态也混乱了,则返回报告。通过AsyncTask.start()您指的是新的CheckStatusTask().execute()吗;而且我的想法也不正确,@layout/online指向一个xml文件,该文件设置了背景颜色,背景颜色根据状态从绿色变为红色。是的,请将其注释掉,然后尝试在onCreate()中设置状态的可见性,以查看它是否正确工作在这一行
android:background=“@layout/online”
layout/online指向什么?通过将版面资源设置为线性布局的背景,您试图实现什么?online指向一个图像,而drawable offline指向另一个图像。这很好,在添加微调器之前,我已经在其中了。我唯一的问题是状态and在将变量设置为可见和不可见时加载变量,因为它们被交换。如果它是一个图像,它看起来应该是
@drawable/online
而不是
@layout/online
,它将从布局文件夹中获取
online.xml
文件。另外,尝试注释掉AsyncTask.start()现在,在findViewById()调用之后立即添加这个
status.setVisibility(View.INVISIBLE);
。如果这样做正确地隐藏了状态,或者状态也混乱了,则返回报告。通过AsyncTask.start()您指的是新的CheckStatusTask().execute()吗;而且我的想法也不正确,@layout/online指向一个xml文件,该文件设置了背景颜色,背景颜色根据状态从绿色变为红色。是的,请对此进行注释,然后尝试在onCreate()中设置状态的可见性为了查看它是否正常工作,我重新启动了仿真器并修复了它自己。我重新启动了仿真器并修复了它自己
android:background="@drawable/online"