java - 我可以通过 findViewById 以编程方式访问我的 XML 布局吗

标签 java android android-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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">
</RelativeLayout>

我可以做吗

RelativeLayout rl = (RelativeLayout)findViewById(R.layout.activity_main); rl.someMethod();

当我尝试时,我得到了一个 NPE,但我很好奇这样访问它是否可行。

最佳答案

可以以编程方式访问您的RelativeLayout。您做错的是您试图访问 findViewById 中的布局文件。您应该做的是指定相对布局的 id,而不是包含它的文件的名称。为此,首先将 id 设置为您的相对布局

android:id="@+id/someRelativeLayout"

然后在调用setContentView(R.layout.activity_main)之后执行:

RelativeLayout rl = (RelativeLayout)findViewById(R.id.someRelativeLayout); 
rl.someMethod();

关于java - 我可以通过 findViewById 以编程方式访问我的 XML 布局吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22452105/

相关文章:

java - 后台线程与UI交互

java - 在 android 中使用 android-support-v7-appcompat 库运行 PopupMenu 时出现 NoClassDefFoundError

java - Button.setEnabled() 导致 EdiTtext 崩溃

java - 适当的 OOP 和 Java 类之间的灵活性

android - 什么是 LinearLayoutICS?

android-layout - 为什么Android Studio会创建两个xml布局文件

android - map 布局问题

java - Twilio Android 聊天客户端函数 'getSubscribedChannels()' 返回不完整的 channel

java - JSF 实体转换器 ConcurrentModificationException

android - 为什么 Maven 存储库中没有 Android SDK 4.4?