我想以编程方式隐藏元/浏览次数在android系统

问题描述 投票:0回答:2

我具有elementId和隐藏标志JSON响应/显示元素

使用此调用函数(从JSON响应)

 displayView(templateDefinationItem.getTemplateDefinationId(), templateDefinationItem.isActive());

我已经创建了一个隐藏了一个视图功能

 public void displayView(final int elementId, boolean isVisible) {
    try {
        View view = findViewById(elementId);
        if (isVisible) {
            view.setVisibility(View.VISIBLE);

        } else {
            view.setVisibility(View.GONE);

        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

在上述代码中,我通过elementId和真/假值的操作,其中的elementId(EditTextId,TextView的,LinearLayout中,按钮等)

错误

我在这一行有错误View view = findViewById(elementId);越来越null

我想要的是

是否有任何方式结合的任何类型的元件的?或任何相同的通用的看法?

在我的情况,我用这个View view = findViewById(elementId);的结合,但我得到空。

android android-layout android-view android-design-library
2个回答
1
投票

而是通过视图id你应该通过视图显示方法更方便。

所以如果事情你存储这个ID的一些在哪里,以后用得到它,因为IDS产生不正确的看法和它不同的设备到设备,当应用程序关闭可能随时改变,并重新开始首先查看ID是自动生成的。

您可以通过getIdentifier()

try {
     String buttonID = elementId;//String name of id
     int resID = getResources().getIdentifier(buttonID, "id", getPackageName());
     View view = findViewById(resID);
     if (isVisible) {
        view.setVisibility(View.VISIBLE);
     } else {
        view.setVisibility(View.GONE);
    } catch (Exception e) {
        e.printStackTrace();
    }

如上述我们传递视图id与i和j的值的组合,然后使用则getIdentifier()方法,使视图对象。

我的东西上面的代码是对你的问题的解决方案。


0
投票

在上创建方法:

View view = findViewById(R.id.your_view);

然后在功能:

if(isVisible){
view.setVisibility(View.VISIBLE);
} else {
view.setVisibility(View.GONE);
}

0
投票

我会建议使用科特林而不是Java,另外使用core ktx library(这是有用的科特林扩展为Android库)。有了它,你可以这样做:

view.isVisible = true设置为View.VISIBLE的视图,而view.isVisible = false将它设置为View.GONE

同样,你有view.isInvisible非可视化和可视和view.isGone该走了,可见之间切换之间切换。

如果你需要的这些方法的文档,你可以找到它here

此外,如果您使用的科特林而不是Java,你不需要做findViewById(R.id.xxx),你可以简单地做任何视图的静态导入。

© www.soinside.com 2019 - 2024. All rights reserved.