小编jon*_*nrz的帖子

在Android Studio 2.2中启用"注释处理器"选项

我正在尝试在我的项目中使用java 8,为此我添加了jack编译器.

启用插孔后,我开始遇到使用注释处理的库的问题,并在Web上查看我读到需要android studio 2.2和com.android.tools.build:gradle:2.2.0-alpha6来编译从注释生成代码的库.

我下载Android Studio 2.2预览版6并将我的项目转换为它.之后我发现不再支持apt gradle插件,然后我需要将使用apt的每个依赖项更改为使用新的annotationProcessor选项.

例如:

apt "org.projectlombok:lombok:$rootProject.lombokVersion"
Run Code Online (Sandbox Code Playgroud)

annotationProcessor "org.projectlombok:lombok:$rootProject.lombokVersion"
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用"make project",项目编译没有问题,但如果我尝试执行它,我的代码应该由注释生成错误.

此外,当我打开项目时,我收到来自lombok插件的警告"注释处理似乎已禁用该项目".当我打开项目设置并转到"构建 - >编译器"时,我找不到注释处理器.

所以,我的问题是:如何在Android Studio 2.2中启用注释处理器?此功能已被禁用?如果是,我如何从注释中生成代码?

--EDIT--我正在制作一个PullRequest来改变用Java8编译的项目,你可以在这里查看PR:https://github.com/jonathanrz/myexpenses-android/pull/57

java android annotations android-studio-2.2

43
推荐指数
5
解决办法
4万
查看次数

Kotlin当多个值不工作时值是一个android视图

我实现了一个递归使用anko的apply函数:

fun applyTemplateViewStyles(view: View) {
    when(view) {
        is EditText, TextView -> {
            ....
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,说"函数调用'TextView(...)'期望"

既然我可以写一个像0,1这样的子句,为什么我不能用Android视图做同样的事情?

android kotlin

20
推荐指数
3
解决办法
8048
查看次数

升级到Android Studio 3.0后不存在支持注释

将项目升级到AndroidStudio 3.0-beta1后,androidTest文件停止编译。

找不到很多软件包,其中一些是:

错误:程序包android.support.annotation不存在
错误:找不到符号类StringRes
错误:无法访问
android.support.v7.app.AppCompatActivity的AppCompatActivity 类文件

我已经加了

androidTestCompile "com.android.support:support-annotations:25.3.1"
Run Code Online (Sandbox Code Playgroud)

进入build.gradle

但是即使这样,我仍然没有找到错误的包。我尝试从Android Studio内部和终端运行测试./gradlew connectedCheck

android android-testing android-studio gradle-android-test-plugi android-studio-3.0

15
推荐指数
2
解决办法
2万
查看次数

TableLayout with layout_width = matchparent不匹配parent

我有一个tableLayout有两列和两行,两行和最后一列都有match_parent的宽度,但布局没有填充父宽度,它像自己的wrap_content一样自我组合.

这是代码:

<TableLayout android:layout_width="match_parent">
    <TableRow android:layout_width="match_parent">
        <TextView 
            android:layout_width="wrap_content"
            android:text="static" />
        <EditText
            android:layout_width="match_parent"
            android:text="text" />
    </TableRow>

    <TableRow android:layout_width="match_parent">
        <TextView 
            android:layout_width="wrap_content"
            android:text="static2" />
        <EditText
            android:layout_width="match_parent"
            android:text="text2" />
    </TableRow>
</TableLayout>
Run Code Online (Sandbox Code Playgroud)

对于具有父级宽度的每一行,我需要做什么?

Ps:我工作的地方不允许我发布我的代码,所以我编写了尽可能接近我的代码的代码.我不知道它是不对的,我无法测试.

android android-layout android-tablelayout

11
推荐指数
1
解决办法
1万
查看次数

getView的DialogFragment在onDismiss上返回null

我有一个从DialogFragment派生的自定义对话框.

当用户单击确定按钮时,我需要保存屏幕上的信息.

所以我使我的PositiveButton调用dismiss并且我实现了onDismiss方法来保存数据.

在onDismiss方法中,我需要从Dialog上的editView获取数据.我使用getView().findViewByID得到EditView中,但该方法GetView()返回null.

这是我的代码:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    LayoutInflater inflater = getActivity().getLayoutInflater();

    builder.setView(inflater.inflate(R.layout.dialog_signin, null))
           .setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int id) {
                   LoginDialogFragment.this.getDialog().dismiss();
               }
           })
           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   LoginDialogFragment.this.getDialog().cancel();
               }
           });      
    return builder.create();
}

@override
public void onDismiss(){
    EditView view = (EditView)getView().findViewByID(R.id.edit);
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以将OnCreateDialog中膨胀的视图保存为属性,但这对我来说似乎不对.

如何在onDismiss中从屏幕上获取视图的正确方法?

Ps:我工作的地方不允许我发布我的代码,因此我从谷歌中获取了代码并将其更改为尽可能接近我的代码.

android view dialogfragment

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

PanoramaGL的替代品

我正在使用PanoramaGL在我的应用程序中渲染一些球形图像.

我的图像大于3000像素.我尝试使用支持2048x2048的全景图的PLSpherical2Panorama,但质量不高.(我调整了图像大小)

然后我将全景图分成立方图像,每张面都有1527x1527像素.我编辑了panoramaGL库以支持2048x2048px的立方图像(最初它仅支持1024x1024).质量比sphere2好,但不是我所期望的,而且性能也很糟糕.

一位朋友正在为iOS制作相同的应用程序并使用该库:https://bitbucket.org/javieralonso/japanoview

结果很完美.

所以,我的问题是:任何人都知道任何渲染球形或立方图像并具有热点功能的android库?

android panoramas

4
推荐指数
1
解决办法
3710
查看次数

android实现方法到不同的api级别

我在谷歌开发者的一个Android视频中看到,他们实现了两种方法,并通过注释定义了应该根据api级别调用哪种方法.

不幸的是,我再也找不到视频了(我记不起哪个视频了),所以我在StackOverflow上搜索了这个问题,发现了这个:针对不同API级别的不同Java方法

在他使用注释@apilevel的问题中,我找不到那个注释.

基本上,我想要做的是:

@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
private int getDisplayWidth(Display display){
    Point size = new Point();
    display.getSize(size);
    return size.x;
}

@TargetApi(Build.VERSION_CODES.FROYO)
private int getDisplayWidth(Display display){
    return display.getWidth();
}
Run Code Online (Sandbox Code Playgroud)

但是ADT给了我重复的方法错误.

java android android-annotations

4
推荐指数
1
解决办法
2536
查看次数

eslint 抱怨 getInitialProps

这是我的 .eslintrc

{
  "plugins": ["react"],
  "parserOptions": {
    "ecmaVersion": 6,
    "sourceType": "module",
    "ecmaFeatures": {
      "jsx": true
    }
  },
  "env": {
    "es6": true,
    "browser": true,
    "node": true,
    "mocha": true
  },
  "extends": ["eslint:recommended", "plugin:react/recommended", "standard"],
  "rules": {}
}
Run Code Online (Sandbox Code Playgroud)

这是我的组件:

class Index extends React.Component {
  static async getInitialProps({ req }) {
    ....
  }
}
Run Code Online (Sandbox Code Playgroud)

Eslint 抱怨 getInitialProps:

Parsing error: Unexpected token getInitialProps
Run Code Online (Sandbox Code Playgroud)

除了添加抑制注释之外,还有什么方法可以让 eslint 接受 getInitialProps 声明?

reactjs eslint nextjs

4
推荐指数
1
解决办法
467
查看次数

RXJava 2 Flowable 的合并不合并

我的 Room`s dao 上有这个方法

@Query("SELECT * FROM Expense WHERE date >= :initDate AND date <= :endDate AND chargeableUuid = :chargeableUuid ORDER BY date")
fun currentMonth(initDate: Long, endDate: Long, chargeableUuid: String): Flowable<List<Expense>>
Run Code Online (Sandbox Code Playgroud)

我是这样使用它的:

dao.currentMonth(firstDayOfMonth, lastDayOfMonth, account.uuid)
            .mergeWith(dao.currentMonth(firstDayOfMonth, lastDayOfMonth, card.uuid))
            .subscribe { Log.i("test", "size ${it.size}" }
Run Code Online (Sandbox Code Playgroud)

如果我分别执行每个调用,每个调用都返回一个元素(不同的元素),但是当我一起执行它们时,日志输出只有一个元素在返回的列表中。

如何将两个 Flowables 的发射合并为一个?

android rx-java2

4
推荐指数
1
解决办法
5186
查看次数

如何使用connectedAndroidTest命令仅运行测试套件

我在 Circle ci 中运行 UI 测试时遇到超时问题,因为命令connectedAndroidTest 的运行时间超过 10 分钟。

所以我试图将它们分成测试套件并一次运行每个套件。

我在这里找到了如何为我的 android 测试创建套件:https://developer.android.com/reference/junit/framework/TestSuite.html

但我找不到如何使用connectedAndroidTest 命令运行它们。

android android-testing circleci android-espresso

3
推荐指数
1
解决办法
1515
查看次数