gpt4 book ai didi

java - 如何将自定义操作栏布局与 AndroidAnnotations 结合使用?

转载 作者:行者123 更新时间:2023-12-01 12:45:01 26 4
gpt4 key购买 nike

如何将自定义操作栏布局与 AndroidAnnotations 结合使用?

有效的代码:

@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();
}
});
}
}

但是下面的代码 fragment 却没有:

@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”,它应该看起来像这样(在创建时默认情况下应该创建它) Activity ):

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context=".MyActivity">
<item android:id="@+id/thisIsAnId"
android:icon="@drawable/your_drawable"
android:title="@string/your_string"
app:showAsAction="always"/> />
</menu>

这段代码中重要的是给它一个id(你会需要它),如果你想要一个好看的图标,请将图标像任何其他 Assets 一样上传到你的可绘制文件夹(不确定,但我认为字符串是可选的)。

2.- 现在转到您的 Activity 并使用 AndroidAnnotations 调用菜单,如下所示:

@EActivity(R.layout.my_activity)
@OptionsMenu(R.menu.myactivity_menu)

是不是很简单,只需在 @EActivity 下添加 @OptionsMenu 即可,您的菜单现在应该可见。

然而,这是一个重要的观点,那么我如何使用菜单中的按钮或图标执行某些操作?这是一个非常好的问题,因为 AndroidAnnotations 文档对此并不清楚,示例非常差,可能会让您感到困惑。所以这就是我们要做的:

3.- 在这里我们将为菜单项设置一个查找器:

   @OptionsItem(R.id.thisIsAnId)
void whatEverToDoWithMyMenuItem() {
}

下面需要有一个 void 方法,我认为这是 AndroidAnnotations 文档中唯一正确的指示。

此代码可以放在@AfterViews下。

但是,这仍然不清楚,导致 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)时,点击监听器就已经设置好了,所以我们可以在下面的 void 方法中做任何我们想做的事情。

如果由于某种原因您在 voide 方法中使用警报并收到错误,请参阅此问题,我的问题已通过使用 this 修复

Link 1

Link 2

如果 AndroidAnnotations 的任何人正在阅读本文,请改进您的文档。

关于java - 如何将自定义操作栏布局与 AndroidAnnotations 结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24789623/

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