标签: android-annotations

AndroidAnnotations如何在onCreate之后添加init代码

如果我将活动定义为:

@EActivity(R.layout.activity_login)
public class LoginActivity extends Activity
Run Code Online (Sandbox Code Playgroud)

这将为我创建onCreate()方法,但是我想在onCreate方法之后使用额外的init代码,我应该怎么做?我可以创建自己的onCreate方法并使用空的@EActivity,但是有更好的方法吗?

java android android-annotations

6
推荐指数
1
解决办法
2668
查看次数

AndroidAnnotations的继承活动

使用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.谁能告诉我有什么问题?谢谢你提前.

android android-activity android-annotations

6
推荐指数
1
解决办法
3397
查看次数

AndroidAnnotations未找到活动

嗨,我已添加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 android-annotations

5
推荐指数
1
解决办法
3047
查看次数

注释导入在清理时给出错误

我这里有一个奇怪的情况.我的应用程序是在android中使用注释.我不得不使用几个直接需要注释类的方法.但是,当我清理我的项目或开始我的日食时,导入会给我错误.

 import com.black.devil.app.view.CustomDetailsItemView_ cannot be resolved
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过这个问题或者有任何线索如何解决它.目前,在清理我的项目或启动eclipse后,我删除了所有的导入,然后再次重新导入帮助我解决我的错误.但每次清理/开始日食时我都需要这样做.任何永久的解决方案.我没有发布什么代码,所以告诉我是否需要发布任何其他内容.

谢谢黑魔鬼.

eclipse android annotations android-annotations

5
推荐指数
1
解决办法
795
查看次数

为父类中定义的字段添加注释

我有一个抽象基类和两个子类;我在两个子类中有“相同”字段,用“不同”注释互相注释,我想将字段“向上”放入基类中,并在子类中添加注释。

有可能吗?(以下非工作伪代码)

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)

java annotations android-annotations

5
推荐指数
1
解决办法
4355
查看次数

AndroidAnnotations和EventBus

我在库中有一个带注释的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-annotations greenrobot-eventbus

5
推荐指数
2
解决办法
3862
查看次数

如何使用AndroidAnnotation从Android发送大型文件到服务器?

我需要从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)

你有什么想法吗?

java rest android android-annotations

5
推荐指数
1
解决办法
618
查看次数

Android Annotations找不到AndroidManifest.xml

我已经检查了几个不同的问题,但没有一个提供适合我的解决方案.我正在使用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

5
推荐指数
1
解决办法
3015
查看次数

RestrictTo 不限制受限方法的使用

我已经将我的库项目的方法之一注释为受限制的,@RestrictTo(Scope.LIBRARY)甚至尝试过@RestrictTo(Scope.LIBRARY_GROUP),但这并不能阻止 API 在项目的其他模块中使用。我什至尝试在两个模块中设置group=xxx和。group=yyy

在此输入图像描述

限制API调用

在此输入图像描述

Android Studio 没有显示错误/警告。

在此输入图像描述 为受限 API 启用事件 lint。

我什至尝试使用在调用者模块上运行 lint./gradlew lint

请在Github上找到实现

库模块 - 异步任务处理器

尝试设置不同的组 - 模块示例

尝试使用完全不同的包名称 - module myapplication

不确定这里出了什么问题请帮忙。

android android-annotations android-support-library

5
推荐指数
1
解决办法
2566
查看次数

如何修复使用 android Studio 3.5 和 3.5.0 gradle 编译的 Android Annotations 4.6.0

我将 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 文件中

这是一个 Gradel 应用程序 这是一个等级构建

但据说

信息:选项设置“android.enableSeparateAnnotationProcessing=true”是实验性的,不受支持。当前默认值为“假”。

找不到 AndroidManifest.xml 文件

java android gradle android-annotations android-studio

5
推荐指数
1
解决办法
1971
查看次数