如果我将活动定义为:
@EActivity(R.layout.activity_login)
public class LoginActivity extends Activity
Run Code Online (Sandbox Code Playgroud)
这将为我创建onCreate()方法,但是我想在onCreate方法之后使用额外的init代码,我应该怎么做?我可以创建自己的onCreate方法并使用空的@EActivity,但是有更好的方法吗?
使用AndroidAnnotations构建活动时遇到一些麻烦.我有一个名为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));
}
}
Run Code Online (Sandbox Code Playgroud)
在我的第二个Activity中,我想用anoter layout xml填充mainFrameLayout,如下所示:
@EActivity
public class ChildActivity extends TemplateActivity
{
@Override
public void postInit()
{
super.postInit();
setMainView(R.layout.activity_child_one);
}
}
Run Code Online (Sandbox Code Playgroud)
当我想要startActivity时,我的ChildActivity是空白的,并且从未调用过postInit.谁能告诉我有什么问题?谢谢你提前.
嗨,我已添加AndroidAnnotations并配置它; 它使用下划线_作为后缀生成活动,但是当我尝试在应用程序中午餐时,它会出现此错误
05-26 04:17:23.524: E/AndroidRuntime(5096): java.lang.RuntimeException:
Unable to instantiate activity
ComponentInfo{android_app.candgo/android_app.candgo.HelloAndroidActivity_}:
java.lang.ClassNotFoundException: Didn't find class
"android_app.candgo.HelloAndroidActivity_"
on path: /data/app/android_app.candgo-1.apk
Run Code Online (Sandbox Code Playgroud)
关于它为什么不起作用的任何建议
PD:我的ADT v22 PD:我在清单上注册了HelloAndroidActivity_
这是我的manifest.xml(抱歉延迟)
<uses-sdk android:minSdkVersion="8"
android:targetSdkVersion="16" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name="MainActivity_">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud) 我这里有一个奇怪的情况.我的应用程序是在android中使用注释.我不得不使用几个直接需要注释类的方法.但是,当我清理我的项目或开始我的日食时,导入会给我错误.
import com.black.devil.app.view.CustomDetailsItemView_ cannot be resolved
Run Code Online (Sandbox Code Playgroud)
有没有人遇到过这个问题或者有任何线索如何解决它.目前,在清理我的项目或启动eclipse后,我删除了所有的导入,然后再次重新导入帮助我解决我的错误.但每次清理/开始日食时我都需要这样做.任何永久的解决方案.我没有发布什么代码,所以告诉我是否需要发布任何其他内容.
谢谢黑魔鬼.
我有一个抽象基类和两个子类;我在两个子类中有“相同”字段,用“不同”注释互相注释,我想将字段“向上”放入基类中,并在子类中添加注释。
有可能吗?(以下非工作伪代码)
abstract class Base {
Object field;
}
class C1 extends Base {
@Annotation1
super.field;
}
class C2 extends Base {
@Annotation2
super.field;
}
Run Code Online (Sandbox Code Playgroud) 我在库中有一个带注释的Activity,它是来自同一个库的EventBus事件的订阅者.它看起来像这样,大大简化了:
@EActivity(resName = "activity_foo")
public class Foo extends Activity {
public void onEvent(BarEvent event){
doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
它应该按照这个工作:
http://timnew.me/blog/2014/09/14/otto-and-android-annotations-compatibility-issue-analysis/
但实际上它会返回此错误:
无法启动活动... de.greenrobot.event.EventBusException:订阅者类com.foo.bar.activities.Foo_没有名为onEvent的公共方法
似乎EventBus没有查看父类.我想每个人都在谈论的@Subscribe注释仅在Guava和Otto中,而不是在EventBus中.没有人在谈论网络上的AA和Eventbus之间的兼容性问题,所以我必须遗漏一些东西.
我怎样才能做到这一点?
EventBus:2.4
AA:3.2
编辑:
在WonderCsabo的回答之后,我将EventBus更新到3.0 beta(包括订阅注释)和AA到3.3.1并且问题消失了,但还有另外一个:
java.lang.NoSuchFieldError
at libcore.reflect.AnnotationAccess.decodeValue(AnnotationAccess.java:688)
at libcore.reflect.AnnotationAccess.getDefaultValue(AnnotationAccess.java:361)
at java.lang.reflect.Method.getDefaultValue(Method.java:327)
at libcore.reflect.AnnotationFactory.getElementsDescription(AnnotationFactory.java:75)
at libcore.reflect.AnnotationFactory.<init>(AnnotationFactory.java:112)
at libcore.reflect.AnnotationFactory.createAnnotation(AnnotationFactory.java:94)
at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:666)
at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:641)
at libcore.reflect.AnnotationAccess.getDeclaredAnnotation(AnnotationAccess.java:170)
at java.lang.reflect.Method.getAnnotation(Method.java:301)
at de.greenrobot.event.n.b(SourceFile:133)
at de.greenrobot.event.n.a(SourceFile:79)
at de.greenrobot.event.c.a(SourceFile:135)
at com.babestudios.lib.lq.activities.f.onStart(SourceFile:515)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1236)
at android.app.Activity.performStart(Activity.java:6006)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method) …Run Code Online (Sandbox Code Playgroud) 我需要从Android平板电脑向服务器发送一个大文件.
所以现在我正在使用Android Annotation它,但现在我得到OutOfMemory Exception因为我的文件大于35MB.我搜索过,并且我不明白,如果我使用FileOutputStream连接,我可以避免这种异常.
但是如何使用我的连接获取输出流@Rest AndroidAnnotation Class?
这是我的代码:
@Rest(converters = {FormHttpMessageConverter.class, MappingJackson2HttpMessageConverter.class}
/*, interceptors=MyClientHttpRequestInterceptor.class*/)
public interface DbRestClient extends RestClientErrorHandling{
void setRootUrl(String rootUrl);
String getRootUrl();
void setRestTemplate(RestTemplate restTemplate);
RestTemplate getRestTemplate();
@Post("dbSynk/postNew")
Integer postDb(MultiValueMap file);
}
Run Code Online (Sandbox Code Playgroud)
进入我的@EService:
@RestService DbRestClient dbRestClient;
...
dbRestClient.postDb(file)
Run Code Online (Sandbox Code Playgroud)
你有什么想法吗?
我已经检查了几个不同的问题,但没有一个提供适合我的解决方案.我正在使用Android Annotations开发一个项目,当我尝试构建我的项目时,它失败并出现以下错误(Project_Location只是我的本地项目文件夹):
错误:无法在指定路径中找到AndroidManifest.xml文件:[/ Project_Location/mobile/build/intermediates/manifests/full/debug/AndroidManifest.xml]
这是我的移动build.gradle文件:
apply plugin: 'com.android.application'
ext.androidAnnotationsVersion = '3.3.2';
ext.eventBusVersion = '2.4.0';
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
}
}
apply plugin: 'android-apt'
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
wearApp project(':wear')
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.google.android.gms:play-services:8.3.0'
apt "org.androidannotations:androidannotations:${androidAnnotationsVersion}"
compile "org.androidannotations:androidannotations:${androidAnnotationsVersion}"
apt "de.greenrobot:eventbus:${eventBusVersion}"
compile "de.greenrobot:eventbus:${eventBusVersion}"
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.dev.app_name"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "0.3"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
} …Run Code Online (Sandbox Code Playgroud) android android-manifest android-annotations build.gradle android-gradle-plugin
我已经将我的库项目的方法之一注释为受限制的,@RestrictTo(Scope.LIBRARY)甚至尝试过@RestrictTo(Scope.LIBRARY_GROUP),但这并不能阻止 API 在项目的其他模块中使用。我什至尝试在两个模块中设置group=xxx和。group=yyy
限制API调用
Android Studio 没有显示错误/警告。
我什至尝试使用在调用者模块上运行 lint./gradlew lint
请在Github上找到实现
库模块 - 异步任务处理器
尝试设置不同的组 - 模块示例
尝试使用完全不同的包名称 - module myapplication
不确定这里出了什么问题请帮忙。
我将 Android studio 更新到 3.5 但是使用 android annotations 时出现问题
Gradle may disable incremental compilation as the following annotation processors are not incremental: jetified-androidannotations-4.6.0.jar (org.androidannotations:androidannotations:4.6.0).
Consider setting the experimental feature flag android.enableSeparateAnnotationProcessing=true in the gradle.properties file to run annotation processing in a separate task and make compilation incremental
Run Code Online (Sandbox Code Playgroud)
我已经把 android.enableSeparateAnnotationProcessing=true 放在 gradle.properties 文件中
但据说
信息:选项设置“android.enableSeparateAnnotationProcessing=true”是实验性的,不受支持。当前默认值为“假”。
找不到 AndroidManifest.xml 文件