gpt4 book ai didi

android - AndroidAnnotations 的继承 Activity

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:43:56 25 4
gpt4 key购买 nike

我在使用 AndroidAnnotations 构建 Activity 时遇到了一些麻烦。我有一个名为 TemplateActivity 的父 Activity :

@EActivity(R.layout.activity_template)
@NoTitle
public class TemplateActivity extends Activity
{
// some views
// ...
@ViewById(R.id.main_framelayout)
FrameLayout mainFrameLayout;

@AfterViews
public void postInit()
{
Log.d("DEBUG", "postInit"); // never called, strange...
}

public void setMainView(int layoutResID)
{
mainFrameLayout.addView(LayoutInflater.from(this).inflate(layoutResID, null));
}
}

在我的第二个 Activity 中,我想用另一个布局 xml 填充 mainFrameLayout :

@EActivity
public class ChildActivity extends TemplateActivity
{
@Override
public void postInit()
{
super.postInit();

setMainView(R.layout.activity_child_one);
}
}

当我想要启动 Activity 时,我的 ChildActivity 是空白的,并且从未调用过 postInit。谁能告诉我哪里出了问题?感谢您的提前。

最佳答案

父类中的注解将生成具有指定布局的类 TemplateActivity_。子类将从该父类继承“正常”的东西,但有自己的 AA 子类 (ChildActivity_)。所以你也应该指定在那里使用的布局。只需查看生成的类,看看那里发生了什么。

AA 的工作原理是为带注释的类(例如 TemplateActivity_ extends TemplateActivity)生成一个新的子类,其中包含实现注释结果所需的代码。例如,在此类中,onCreate() 方法将实例化所需的布局,用@Background 注释的方法将被另一个在后台线程中调用原始方法的实现覆盖。 AndroidAnnotations 在运行时并没有真正做任何事情,一切都可以在它生成的类中看到,只需查看 .apt_generated 文件夹(或者你生成类的任何地方)。如果它不能完全满足您的要求,这也会很有帮助,因为您可以只看一下它的作用,然后按照您需要的方式自行完成。

在你的例子中,继承层次是这样的:

TemplateActivity (with annotations)
L--> TemplateActivity_ (with generated code for the layout)
L--> ChildActivity (your other class, no generated code)
L--> ChildActivity_ (with code generated for the annotations in ChildActivity)

Afaik 并非所有注释都传递给子类。

关于android - AndroidAnnotations 的继承 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18563650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com