我可以在要充气的布局中包含的元素上使用Roboguice @InjectView吗?我觉得元素首先被声明为@Nullable,因为在完成膨胀之前它们是未知的。但是在膨胀之后,元素仍然保持为空,直到“findViewById”完成。
举个例子: 我使用以下代码注入一个可以为null的textview(标题),它包含在title_layout中,将在主布局中膨胀:
@Nullable @InjectView(R.id.title) TextView title;
@InjectView(R.id.title_info) LinearLayout titleContainer;
然后在onCreate()方法中我这样做:
setContentView(R.layout.main);
inflater.inflate(R.layout.title_layout, titleContainer);
我有 main.xml :
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/title_info">
</LinearLayout>
</LinearLayot>
和 title_layout.xml :
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/title"
android:text="my title" />
</LinearLayot>
即使在冒充title_layout之后,膨胀视图中的标题(TextView)始终为 null 。
这样做:
setContentView(R.layout.main);
inflater.inflate(R.layout.title_layout, titleContainer);
title = (TextView)findViewById(R.id.title);\
解决了这个问题。
有没有办法使用@InjectView?
答案 0 :(得分:2)
我遇到了同样的问题 - 事实证明我正在扩展Activity
而不是RoboActivity
,所以它永远不会处理注射。