我有一个自定义组件(类似于信息面板) - 带有少量文本视图的 LinearLayout。我正在使用android注释。
问题
如果我尝试使用@AfterViews,则永远不会调用该方法(问题1)。
问题是当我尝试通过注释在文本视图中设置某些内容时,该文本视图为空(问题 2)..
如果我从另一个类尝试,我确信android注释可以工作,我可以轻松且没有任何问题地进入那个textView并在那里设置一些东西..变量不为null并且没有问题..但是在另一个类中我使用 AA,我也使用 Activity..:/ 所以我在想@EViewGroup 是否有问题.. 但是根据他们的 javadoc,@EVIewGroup 对 AfterViews 和 ViewById 没有问题..(根据他们的网站,快一切都是 viewGroup :] 我认为我选择了从线性布局扩展的正确可能性)
有人有一些提示我缺少什么吗?
-- 我在另一个片段中使用该自定义组件。
-- 这个类中有一个类调用方法(--> 在代码预览中--somethingIsCalling()),当想要在textView中显示某些东西时会触发该方法)
问题代码:
自定义组件布局(info_panel.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:baselineAligned="false"
android:id="@+id/infoPanel">
<TextView
android:id="@+id/txtAccName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="right|center_vertical" />
</LinearLayout>
该自定义组件的 java 代码:
@EViewGroup(R.layout.info_panel)
public class InfoPanel extends LinearLayout {
@ViewById(R.id.txtAccName)
protected TextView txtName;
public InfoPanel(Context ctx, AttributeSet attr)
{
super(ctx, attr);
LayoutInflater.from(ctx).inflate(R.layout.info_panel, this);
}
@AfterViews
protected void init()
{
// PROBLEM 1, THIS METHOD IS NEVER CALLING
txtName.setText("call after view");
}
public void somethingIsCalling()
{
// PROBLEM 2, txtName WHEN ITS CALLED IS NULL
txtName.setText("something is calling");
}
}