繁体   English   中英

在测试环境中使用findViewById()时返回null?

findViewById() returns null while using it in test clas?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我在片段中有一个布局(main_layout)。 现在,当我尝试使用以下方法从测试类访问它时:

View testLayout=getActivity().findViewById(R.layout.main_layout);

它返回我为空吗? 谁能告诉我我做错了什么吗?

5 个回复

我认为您对视图和布局资源有些困惑。 如果要以“视图”的形式获取布局,则可以这样进行:

LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.main_layout, null);

或者,如果您想在布局中获取视图(请确保已为其指定ID,例如android:id =“ @ + id / textview01”),则可以执行以下操作:

setContentView(R.layout.main_layout);
TextView textView = (TextView) findViewById(R.id.textview01);

您将在main_layout.xml中获得TextView

试试这个

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.main_layout, container, false);

您应该通过id引用视图,因此应该使用类似R.id.main_layout视图,而不是使用R.layout.main_layout

首先,在您的main_layout.xml文件中为顶层布局设置一个ID。 例如,id可以为@+id/main_layout_wrapper

然后在测试类中使用以下命令进行搜索:

View testLayout = getActivity().findViewById(R.id.main_layout_wrapper);

此类错误由以下几点引起:

  1. 您是否在setContentView()中使用相同的布局。
  2. 您使用的是相同的小部件ID。

因此,请正确检查您的活动并使用调试。

2 在 onCreateView 之外使用 findViewById 返回 null

我尝试了几种不同的方法,但似乎不起作用。 如果我使用getActivity()或getView()在onCreateView之外执行findViewById ,它会返回 null 并且我的应用程序崩溃。 这是一个代码片段: 在这里您可以看到onCreateView下面的方法中的视图正在使用ge ...

6 开关 findViewById 返回 null

我正在尝试 2 天来解决这个问题。 我制作了一个片段,其中我做了一个启用和禁用蓝牙的开关。 在我的主要活动中,我写道: 点击的地方: 和: 当我运行它时 findViewById 返回 null...你知道吗??? ...

7 findViewById()函数返回null

我有布局文件custom_lock.xml。 它具有3个子布局。 问题是,当我尝试从MainActivity.java访问布局的元素时,它返回null。 它让我发疯。 请帮我。 谢谢。 以下是我的MainActivity.java 当我运行该程序时,“ placexml ...

8 .findViewById() 返回 null

所以,我试图在我的 Android 应用程序的 SettingsFragment 中使用 Switch,但似乎 IDE 不会在 XML 中看到它。 我使用了调试器,似乎 root.findViewById(R.id.physicalEffortSwitch) 返回 null .. 它只是没有任何意义 ...

9 Xamarin FindViewById 返回 null

我正在尝试使用 Xamarin so C# 制作一个 android 应用程序。 我做了两个布局,在每个布局中我都做了两个按钮来在它们之间导航。我试过这样: 但是每次当我启动应用程序时,我都会得到这个错误:System.NullReferenceException has been throw. ...

10 Android:findViewById返回null

我为我的Activity创建了一个动态创建的布局(不要问我为什么,这不是我的项目,但我被要求编辑一下)。 我正在尝试添加另一个布局,一种状态栏。 我添加了第二个布局的XML布局,这就是代码的样子: 但findViewById返回null,每当我尝试使用LinearLayout内的两个 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM