使用AndroidAnnotation进行ViewGroup注入

时间:2013-04-10 07:00:12

标签: android-annotations

我正在我的活动上实施一个ActionBar。我试图将此作为AndroidAnnotaions @EViewGroup组件,但由于某种原因,我无法在我的活动中看到该组件。该项目编译得很好。

我的代码基本上就像下面的

actionbar.xml

<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_height="@dimen/action_bar_height"
  android:layout_width="match_parent"
  >

<ImageButton
  android:id="@+id/back"
  android:layout_height="wrap_content"
  android:layout_width="wrap_content"
  android:src="@drawable/back_button"
  />

<!-- Rest of the views omitted -->
</RelativeLayout>

ActionBar.java

@EViewGroup( R.layout.actionbar )
public class ActionBar extends RelativeLayout {

private Context mContext;

public ActionBar( Context aContext, AttributeSet aAttributeSet ) {
  super( aContext );
  mContext = aContext;
}
// @Click listener methods omitted

这就是我在另一种布局XML

中使用它的方式
<jandy.android.ActionBar_
  android:id="@+id/actionbar"
  android:layout_width="match_parent"
  android:layout_height="@dimen/action_bar_height"
  />

根据AA文件,这就是所需要的。但如上所述,没有任何可见的东西。

感谢。

1 个答案:

答案 0 :(得分:1)

我认为您需要实现具有不同参数的构造函数:

public CustomActionbarComponent(Context context) {
    super(context);
}

public CustomActionbarComponent(Context context, AttributeSet attrs) {
    super(context, attrs);  
}

public CustomActionbarComponent(Context context, AttributeSet attrs, int defStyle) {
    super(context);
}

也许从xml创建的自定义视图使用另一个构造函数。这是您的代码和我的工作自定义操作栏的唯一区别。

希望它有所帮助!