/**
* 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说这是由以下原因引起的:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法’android.view.View
android.view.Window.findViewById(int)’
findViewById()
上的Activity
从根视图(所谓的“装饰视图”)和横穿可用的小部件和容器,寻找一个ID匹配的树开始。因此,findViewById()
在上调用Activity
只会发现属于整体活动视图层次结构的视图。
但是,您的inflate()
呼叫不会将膨胀的内容附加RelativeLayout
到活动视图层次结构。这是预期的。当片段本身被附加时,这些视图将被附加到活动视图层次结构中onCreateView()
。结果,当您
从内部 调用findViewById()
活动
时onCreateView()
,它找不到您的TextView
,因为该活动TextView
仅由片段管理,还不是活动视图层次结构的一部分。
findViewById()
上View
或ViewGroup
从开始View
或ViewGroup
与横梁可用的widget和容器,找一个ID匹配的树。在RelativeLayout
访问你的TextView
,所以当你打电话findViewById()
的RelativeLayout
,你膨胀,它的工作原理。
问题内容: 我正在尝试通过以下方式将日期范围划分为各个日期: 而且我不知道为什么不起作用,因为日期仍然相同,所以循环变得无限。 问题答案: plusDays不会改变原始的,您必须分配结果:
问题是,我试图使用findViewById()全局初始化TextView对象,但它在运行时抛出一个错误,然后,如果我在onCreate()或任何其他方法中使用它,初始化工作就会很好。 我正在为API级别22及以上开发
我理解这是指当前对象。所以,与其使用 为什么我不能使用 请参考下面的例子,并在最后看到最后两个评论。
我有很多这样的电话: AndroidStudio告诉我,他们可能会获得: -如果第二个参数为null,方法返回null-如果第二个参数为null,否则返回null -一个典型的方法,如果传递给它true将引发异常 检查可以配置为使用自定义注释(默认情况下将使用来自annotations.jar的注释) 幸运的是,everithing可以工作,但我可以对这段代码进行改进吗?
我只是想用robolectric测试某个视图是否在片段中可见。我的单元测试如下所示: 我使用的是最新的android gradle Plugin1.1.3、Robolectirc2.4和robolectric gradle Plugin1.0.1,我的单元测试在文件夹中(而不是)。我无法编译该代码,因为编译器无法解析。 我的: 更新:以下是完整的代码: 代码可以在这里找到:https://gith
这是我的线程: 它得到一个上限和下限以及一个在所有线程上共享的结果。 这是我的测试类: