为什么 findViewById() 在这里不能像 getActivity().findViewById() 一样工作?

2023-12-01

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_detail,
                    container, false);
            // The detail Activity called via intent.  Inspect the intent for forecast data.
            Intent intent=getActivity().getIntent();
            TextView text=(TextView)rootView.findViewById(R.id.text1);
            String b=intent.getStringExtra(Intent.EXTRA_TEXT);
            text.setText(b);

            return rootView;
        }
    }

在这段代码中,当我使用时

TextView text=(TextView)getActivity().findViewById(R.id.text1)

然后我的应用程序崩溃了,Logcat 说

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference

这是与此代码关联的 XML 文件

<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="com.example.sunshine.app.DetailActivity$PlaceholderFragment" >

    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>

在此代码中,当我使用 TextView text=(TextView)getActivity().findViewById(R.id.text1) 时

然后我的应用程序崩溃了,Logcat 说 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference

findViewById() on an Activity从根视图(称为“装饰视图”)开始,遍历可用小部件和容器的树,寻找 ID 匹配。因此,findViewById()呼吁Activity只会查找属于整个活动视图层次结构一部分的视图。

然而,你的inflate()调用不附加充气RelativeLayout到活动视图层次结构。这是预料之中的。当附加片段本身时,这些视图将附加到活动视图层次结构,有时在您从onCreateView()。结果,当你打电话时findViewById()关于活动从内部onCreateView(),它找不到你的TextView, 因为那个TextView仅由片段管理,尚未成为活动视图层次结构的一部分。

findViewById() on a View or ViewGroup从那开始View or ViewGroup并遍历可用小部件和容器的树,寻找 ID 匹配。这RelativeLayout可以访问您的TextView,所以当你打电话时findViewById() on the RelativeLayout你充气,它起作用了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 findViewById() 在这里不能像 getActivity().findViewById() 一样工作? 的相关文章

  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 如何使用 IF 检查 TextView 可见性

    我有一个 onCheckedChangeListener 来根据选择的单选按钮显示文本视图 我有 1 个疑问和 1 个难题 想知道是否有人可以帮助我 问题 您能否将单选组默认检查值设置为 否 单选按钮 以便一开始就不会检查任何内容 问题 如
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • 如何默认在 ActionOpenDocument 意图中显示“内部存储”选项

    我需要用户选择一个自定义文件类型的文件 并将其从 Windows 文件资源管理器拖到 Android 设备上 但默认情况下内部存储选项不可用 当我使用以下命令启动意图时 var libraryIntent new Intent Intent
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • 字符串数组文本格式化

    我有这个字符串 String text Address 1 Street nr 45 Address 2 Street nr 67 Address 3 Street nr 56 n Phone number 000000000 稍后将被使用
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 如何将 google+ 登录集成到我的 Android 应用程序中?

    大家好 实际上我需要通过我的应用程序从 google 登录人们 现在我阅读了 google 上的文档 其中指出 要允许用户登录 请将 Google Sign In 集成到您的应用中 初始化 GoogleApiClient 对象时 请求 PL
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 如何更改列的标识增量

    以下语句可以重置种子 DBCC CHECKIDENT 表名 RESEED 1 但这次我必须改变它的增量 或者您可以使用 Sql Server Management Studio 使用这种方法很可能会重新创建该表
  • Java中如何计算HashMap内存使用量?

    我在面试中被要求计算内存使用情况HashMap如果其中有 200 万个项目 预计会消耗多少内存 例如 Map
  • Java SSLSocket:如何发送完整的服务器证书链?

    当我在 Java 7 中创建 SSLServerSocket 时 服务器正确使用我的服务器证书和密钥 该证书是由 ca 的子 ca 颁发的 因此 从根证书到服务器证书的完整链有四个证书 完整的链存在于密钥库 信任库中 但是 当客户端连接时
  • 如何更改SysDateTimePick32或CDateTimeCtrl的背景颜色?

    我似乎无法更改背景颜色SysDateTimePick32控制 在本例中为白色 在我的 Win32 MFC 应用程序中 我首先尝试覆盖OnCtlColor父窗口中的通知消息 甚至没有被调用 然后我尝试了子类化方法此处描述 这被称为正常 但控件
  • 变量数量与参数数量不匹配 - 是的,它们匹配

    因此 根据建议 我试图包含准备好的陈述 但 PHP 不接受我的代码 stmt link gt prepare SELECT COUNT FROM table WHERE company CONVERT utf8 USING latin1 C
  • 如何处理动画+自动容器大小

    我有这个动画 我想自动调整它的大小以适应内容 标题总是随着白天和用户的变化而变化 我想避免标题容器使用 100 的可用空间来进行进一步的动画 对于所有自动属性 标题只会在 2 5 秒后弹出 那么我该如何处理这个问题呢 typewriter
  • 将上传的文件保存在特定位置

    我有以下代码来处理服务器上的文件上传 但是如何将文件保存到服务器上的特定位置 import gwtupload server UploadAction import gwtupload server exceptions UploadAct
  • 启动HBASE,java.lang.ClassNotFoundException:org.apache.htrace.SamplerBuilder

    我尝试使用 start hbase sh 启动 HBASE 但是出现错误 java lang ClassNotFoundException org apache htrace SamplerBuilder 我尝试过添加各种 jar到各个文件
  • 哪里可以获得简单的 Boost 线程管理示例?

    所以我有一个简单的cpp文件 只有一个具有 1 个主函数和 3 个 int a la 公共变量 喜欢 int a int b int c void main startThredA startThredB while 1 c a b pri
  • PHP 5.4.17 替代“... 运算符”

    我想知道是否有人知道 PHP 5 6 x 及更高版本的替代方案 运算符 或 splat 运算符 我相信它被称为 我目前在 PHP 7 版本中所做的是 this gt callAction explode this gt routes aut
  • 工厂创建相同接口的不同对象

    我有1个接口 public interface ISummary int EventId get set 还有许多实现该接口的具体类 public class EmployeeSummary ISummary public int Even
  • 为什么 TRUE == "TRUE" 在 R 中是 TRUE?

    Why TRUE TRUE is TRUE in R 有没有等价的 in R Update 这些都在回归FALSE TRUE True TRUE true TRUE T 唯一的TRUE值为TRUE TRUE 如果检查identical 一切
  • 对于程序的不同运行,全局变量的地址是否相同?

    考虑以下代码片段 int i 10 int main cout lt lt i 一旦为程序生成了 exe 程序不同运行的输出是否相同 假设操作系统支持虚拟内存 编辑 这个问题特定于存储在数据段中的全局变量 由于这是第一个全局变量 因此地址应
  • JS下载多个文件

    我的目标是有一个脚本来下载给定数组内的所有文件 var links http file examples com wp content uploads 2017 10 file example JPG 100kB jpg http file
  • 从 Android Activity 类调用 Javascript 函数

    我正在开发需要使用参数调用 Javascript 函数的应用程序 为了演示 我在这里写了我的 Activity 代码 我想从中调用 js 函数 主要活动 WebView wView FloatingActionButton fab Cont
  • 按键将对象分组为二维数组

    我有一系列对象 这些对象有一个属性称为time 如果这些对象的时间相同 我想将它们分组到同一个数组中 00 00 id 1 time 00 05 id 1 time 00 15 id 1 time 00 20 id 2 time 00 05
  • 批量复制特定文件到子文件夹中

    我有一个 Windows 批处理文件 正在运行该文件以将特定文件移动到子文件夹中 ECHO OFF ECHO Start Copy setlocal enabledelayedexpansion set SOURCE DIR C Users
  • 将数组插入 PHP 文件

    这可能非常愚蠢 但我们还无法做到这一点 我们正在尝试将数组插入到 php 文件中 然而 我们可以将数组插入到 php 文件中 但格式不符合要求 我们有 2 个文件 文件1 php
  • 获取Flask应用程序的根路径

    我正在开发一个 Flask 扩展 我想在文件系统上的项目根路径中创建一个目录 假设我们有这样的目录结构 project app tests my folder manage py my folder 应该由扩展动态创建 它是一个测试实用程序
  • 为什么 findViewById() 在这里不能像 getActivity().findViewById() 一样工作?

    A placeholder fragment containing a simple view public static class PlaceholderFragment extends Fragment public Placehol