首页 > 解决方案 > Android 应用程序 ImageView.Gone 在设备上不一致

问题描述

在 onResume 中,我得到了对需要更改可见性的小部件的引用。logcat 显示来自首选项的设置正确返回(show_images、show_titles、show_descriptions)。并且 logcat 显示 if else 正按照它应该落入每个 if else 语句中。但在设备上,大约 50% 的时间有些卡片会在启动时显示为空白。在更改首选项后,有些会显得完全空白,有些时候似乎工作正常。我从设备上尝试了 clean、cleanbuild 和 CleanUnInstall,但没有成功。这是在 onResume 中。在调用父 onResume 并获得首选项之后。

    Log.i("INFO", show_images + "" + " "+ show_titles +" " + show_descriptions );
    //force the layout to load before changing properties
    try{
        Thread.sleep(1000);
    } catch (Exception e) {
        e.printStackTrace();
    }

    if(!show_images){
        Log.i("INFO", "show images false");
        image1.setVisibility(View.GONE);
        image2.setVisibility(View.GONE);
        image3.setVisibility(View.GONE);
        image4.setVisibility(View.GONE);
        image5.setVisibility(View.GONE);
    } else{
        Log.i("INFO", "show images true");
        image1.setVisibility(View.VISIBLE);
        image2.setVisibility(View.VISIBLE);
        image3.setVisibility(View.VISIBLE);
        image4.setVisibility(View.VISIBLE);
        image5.setVisibility(View.VISIBLE);
     }

    if(!show_titles){
        Log.i("INFO", "show titles false");
        rTitle1.setVisibility(View.GONE);
        rTitle2.setVisibility(View.GONE);
        rTitle3.setVisibility(View.GONE);
        rTitle4.setVisibility(View.GONE);
        rTitle5.setVisibility(View.GONE);
    }else{
        Log.i("INFO", "show titles true");
        rTitle1.setVisibility(View.VISIBLE);
        rTitle2.setVisibility(View.VISIBLE);
        rTitle3.setVisibility(View.VISIBLE);
        rTitle4.setVisibility(View.VISIBLE);
        rTitle5.setVisibility(View.VISIBLE);
    }

    if(!show_descriptions){
        Log.i("INFO", "show desc false");
        rDescription1.setVisibility(View.GONE);
        rDescription2.setVisibility(View.GONE);
        rDescription3.setVisibility(View.GONE);
        rDescription4.setVisibility(View.GONE);
        rDescription5.setVisibility(View.GONE);
    }else{
        Log.i("INFO", "show desc true");
        rDescription1.setVisibility(View.VISIBLE);
        rDescription2.setVisibility(View.VISIBLE);
        rDescription3.setVisibility(View.VISIBLE);
        rDescription4.setVisibility(View.VISIBLE);
        rDescription5.setVisibility(View.VISIBLE);
    }
}`

标签: androidtextviewimageviewpreferences

解决方案


不太清楚为什么....但是将布局从constraintLayout转换为linearlayouts。然后相同的 onResume 用于控制小部件的可见性。布局问题需要调整,但数据持久性按原样工作


推荐阅读