Java 如何使用带有AndroidAnnotations的自定义actionbar布局?
如何使用带有AndroidAnnotations的自定义actionbar布局 有效的代码:Java 如何使用带有AndroidAnnotations的自定义actionbar布局?,java,android,android-annotations,Java,Android,Android Annotations,如何使用带有AndroidAnnotations的自定义actionbar布局 有效的代码: @EActivity(R.layout.activity_register_classes) public class RegisterClassesActivity extends ActionBarActivity { @AfterViews void setupActionBar() { ActionBar actionBar = getSupportAction
@EActivity(R.layout.activity_register_classes)
public class RegisterClassesActivity extends ActionBarActivity {
@AfterViews
void setupActionBar() {
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setCustomView(R.layout.fragment_save_cancel_action_bar);
findViewById(R.id.id_cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getBaseContext(), "Cancelando...", Toast.LENGTH_SHORT).show();
}
});
}
}
但以下代码段没有:
@EActivity(R.layout.activity_register_classes)
public class RegisterClassesActivity extends ActionBarActivity {
@AfterViews
void setupActionBar() {
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setCustomView(R.layout.fragment_save_cancel_action_bar);
}
@Click(R.id.id_save)
void cancel() {
Toast.makeText(getBaseContext(), "Cancel...", Toast.LENGTH_SHORT).show();
}
}
我正在使用库的3.0.1版本。
Android API 19我看到这个问题还有一些时间,我希望现在能有所帮助。所以我也遇到了这个问题,因为Android注释文档非常差。实际上,我必须解决这个问题两次,因为我的第一个解决方案在第一次点击时不起作用,我将在代码中对此进行解释 1.-首先要创建一个菜单,您必须在res/menu中这样做,让我们将其命名为“myactivity_menu.xml”,它应该是这样的(在创建活动时默认创建): 简单到只需在@EActivity下添加@options菜单,就可以看到您的菜单了 然而,这里有一个很好的观点,那么我如何使用菜单中的按钮或图标呢?这是一个非常好的问题,因为AndroidAnnotations文档对此不清楚,示例非常差,可能会导致混淆。这就是我们要做的: 3.-在这里,我们将为菜单项设置查找器:
@OptionsItem(R.id.thisIsAnId)
void whatEverToDoWithMyMenuItem() {
}
这需要在下面有一个void方法,我认为这是AndroidAnnotations文档中对此的唯一正确指示
此代码可以放在@afterview下
然而,这仍然不清楚,因为AndroidAnnotation改变了源自onItem的Android逻辑。。。那么,如果我必须设置一个侦听器,会发生什么呢
我的错误是在我们刚刚创建的void方法中使用了正常的Android逻辑。那不行
4.-所以这一点很难,我们必须简单地添加我们想做的任何事情,因为我们都准备好了听众:
@OptionsItem(R.id.thisIsAnId)
void whatEverToDoWithMyMenuItem() {
Toast toast = Toast.makeText(getApplicationContext(), "Sample Text",
Toast.LENGTH_LONG);
toast.show();
}
这里的诀窍是,当我们执行@OptionsItem(R.id.thisIsAnId)
时,click的侦听器已设置为allready,因此我们可以在下面的void方法中执行我们想要的任何操作
如果出于某种原因,您在void方法中使用了一个警报并出现错误,请查看此问题,我的问题已通过使用此
如果AndroidAnnotations的任何人正在阅读此文章,请改进您的文档。您可以发布一个示例项目来重现此问题吗?我无法发布该项目,因为它是一个内部产品。但是上面的代码足以重现错误。我要求您发布一个示例项目。我可以从代码中创建它,但它需要额外的东西,代码本身是不够的……我是AndroidAnnotations开发人员。我们的医生少了什么?谢谢你的关心,我受了很多苦。我认为最友好的结构是WordPress抄本的使用。首先,定义代码的内容。在那之后,有几个例子。最后,您可能正在查找此部分。我要强调这些例子。要理解如何使用@OptionItem,还有一个问题没有得到解释,那就是它是一个好的监听器。在其他情况下,如使用服务,则从未详细说明。你必须做一些傻瓜式的文件。逐字写下“这应该放在X文件中,如果没有创建,现在就创建。把它放在Y下”谢谢你的反馈!我认为wiki在菜单主题上非常清楚:“
@OptionsItem
标记接收菜单选择事件的方法”。请注意,AA适用于已经熟悉Android API的开发人员。因此,@OptionsItem
使用侦听器是很平常的。但是您可以随时查看生成的代码,这在AA中是一件非常棒的事情-没有魔法。在我看来,wiki是由AA开发人员编写的,而不是普通用户,因此我们可能会跳过一些对我们来说微不足道的信息。如果您有任何建议,请毫不犹豫地在聊天室或邮件列表中分享。谢谢您的关注。现在我明白了。那么,我想建议你重新关注每一位观众。原因很简单,AA比Android API更适合新手,更简单、更干净。我会留意你提到的频道。再次感谢你。希望你能为我这样的noobs改进你的wiki,它将帮助很多初学者开发。
@OptionsItem(R.id.thisIsAnId)
void whatEverToDoWithMyMenuItem() {
}
@OptionsItem(R.id.thisIsAnId)
void whatEverToDoWithMyMenuItem() {
Toast toast = Toast.makeText(getApplicationContext(), "Sample Text",
Toast.LENGTH_LONG);
toast.show();
}