如何以编程方式访问在xml中声明为不可见的视图?

巴巴纳

我有一个这样的布局,main_layout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout 
            android:id="@+id/testLayout"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="64dp"
            >
            <ImageButton 
                android:layout_width="32dp"
                android:layout_height="32dp"
                android:layout_alignParentLeft="true"
                android:layout_marginLeft="50dp"/>
            <ImageButton 
                android:layout_width="32dp"
                android:layout_height="32dp"
                android:layout_alignParentLeft="true"
                android:layout_marginLeft="100dp"
                android:visibility="invisible"/>
</RelativeLayout>
</RelativeLayout>

现在,我想访问Java代码中的第二个按钮,所以这是导致NullPointerException的代码部分:

RelativeLayout rl = (RelativeLayout) findViewById(R.id.testLayout);
ImageButton b = (ImageButton) rl.getChildAt(1);

我发现了一个新的有趣点。此代码显示rl在代码段中只有一个孩子,所以rl根本没有第二个按钮。为什么?

 log.d("child Counter", String.valueOf(rl.getChildCount())); 

这在LogCat中显示1

对于那些认为这是问题原因的人,这是onCreate方法,但我知道并非如此。

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_layout);
}
哈雷什·切拉纳(Haresh Chhelana)

您的代码运行正常,请尝试这种方式,希望这将帮助您解决问题。

activity_main.xml

<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/testLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="64dp">
    <ImageButton
        android:layout_width="32dp"
        android:layout_height="32dp"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="50dp"/>
    <ImageButton
        android:layout_width="32dp"
        android:layout_height="32dp"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="100dp"
        android:visibility="invisible"/>
</RelativeLayout>

MainActivity.java

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        RelativeLayout rl = (RelativeLayout) findViewById(R.id.testLayout);
        ImageButton b1 = (ImageButton) rl.getChildAt(0);
        b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"Image Button 1 clicked",Toast.LENGTH_SHORT).show();
            }
        });
        ImageButton b2 = (ImageButton) rl.getChildAt(1);
        b2.setVisibility(View.VISIBLE);
        b2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"Image Button 2 clicked",Toast.LENGTH_SHORT).show();
            }
        });
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

以编程方式在不可见视图之间导航 iOS 13

来自分类Dev

使用不可见的图像视图以编程方式创建 GridView

来自分类Dev

如何使按钮在Windows Phone中以编程方式可见?

来自分类Dev

如何以编程方式获取 Android 中视图的 XML 代码?

来自分类Dev

如何使一组视图在android中不可见

来自分类Dev

如何使一组视图在android中不可见

来自分类Dev

如何在设计器中显示不可见的视图?

来自分类Dev

如何以对同事不可见的方式启用某种git自动保存功能?

来自分类Dev

如何以编程方式快速检查iOS应用中键盘是否可见

来自分类Dev

如何以编程方式在Windows 8.1中滚动视图?

来自分类Dev

如何以编程方式在Windows 8.1中滚动视图?

来自分类Dev

如何以编程方式在Xamarin中嵌入视图?

来自分类Dev

相对布局中不可见的视图

来自分类Dev

以编程方式推送UINavigationController后,顶栏不可见

来自分类Dev

如何以编程方式调用/访问按钮操作中的标签?

来自分类Dev

Android如何以编程方式访问string.xml文件中的字符串和color.xml中的颜色

来自分类Dev

尝试以编程方式对不可见的回收站视图项目执行单击时,出现空指针异常

来自分类Dev

如何以编程方式更改视图大小?

来自分类Dev

如何以编程方式创建滚动视图

来自分类Dev

如何以编程方式设置视图的高度?

来自分类Dev

如何以编程方式扩展/旋转视图?

来自分类Dev

如何以编程方式访问ActionErrors?

来自分类Dev

如何以编程方式访问“保存的查询”?

来自分类Dev

如何以编程方式访问约束数据?

来自分类Dev

如何在ScrollView中检测包含不止一种视图类型的不可见视图

来自分类Dev

如何以编程方式从Java创建XML?

来自分类Dev

卡视图不可见

来自分类Dev

卡视图不可见

来自分类Dev

卡视图不可见

Related 相关文章

  1. 1

    以编程方式在不可见视图之间导航 iOS 13

  2. 2

    使用不可见的图像视图以编程方式创建 GridView

  3. 3

    如何使按钮在Windows Phone中以编程方式可见?

  4. 4

    如何以编程方式获取 Android 中视图的 XML 代码?

  5. 5

    如何使一组视图在android中不可见

  6. 6

    如何使一组视图在android中不可见

  7. 7

    如何在设计器中显示不可见的视图?

  8. 8

    如何以对同事不可见的方式启用某种git自动保存功能?

  9. 9

    如何以编程方式快速检查iOS应用中键盘是否可见

  10. 10

    如何以编程方式在Windows 8.1中滚动视图?

  11. 11

    如何以编程方式在Windows 8.1中滚动视图?

  12. 12

    如何以编程方式在Xamarin中嵌入视图?

  13. 13

    相对布局中不可见的视图

  14. 14

    以编程方式推送UINavigationController后,顶栏不可见

  15. 15

    如何以编程方式调用/访问按钮操作中的标签?

  16. 16

    Android如何以编程方式访问string.xml文件中的字符串和color.xml中的颜色

  17. 17

    尝试以编程方式对不可见的回收站视图项目执行单击时,出现空指针异常

  18. 18

    如何以编程方式更改视图大小?

  19. 19

    如何以编程方式创建滚动视图

  20. 20

    如何以编程方式设置视图的高度?

  21. 21

    如何以编程方式扩展/旋转视图?

  22. 22

    如何以编程方式访问ActionErrors?

  23. 23

    如何以编程方式访问“保存的查询”?

  24. 24

    如何以编程方式访问约束数据?

  25. 25

    如何在ScrollView中检测包含不止一种视图类型的不可见视图

  26. 26

    如何以编程方式从Java创建XML?

  27. 27

    卡视图不可见

  28. 28

    卡视图不可见

  29. 29

    卡视图不可见

热门标签

归档