小编Dmi*_*sev的帖子

破坏另一个片段问题

当我#77000000在另一个片段(我们称之为主片段)上显示一个片段(全屏幕为背景)时,我的主片段仍然对点击作出反应(即使我们没有看到它,我们也可以点击一个按钮).

问题:如何防止点击第一(主)片段?

编辑

不幸的是,我不能只隐藏主片段,因为我在第二个片段上使用透明背景(因此,用户可以看到后面的内容).

android android-fragments

257
推荐指数
5
解决办法
8万
查看次数

扩展类并实现接口的泛型类

为了减少类的依赖,我想将参数(使用泛型类)发送到扩展某些类并实现接口的构造函数,例如

public interface SomeInterface{
    public void someMethod();
}

public class MyFragment extends Fragment implements SomeInterface{
    //implementation
}

//here is classs, that I need to create. T must extend Fragment and implements 
//SomeInterface. But, I'm afraid, if I'll use MyFragment directly, it will create a
//dependence of SomeClass from MyFragment.

public class SomeClass /*generic?*/ {
    public SomeClass(T parent);
}
Run Code Online (Sandbox Code Playgroud)

可能吗?

另外,使用我的T类,我想创建视图,使用T.getActivity()作为Context.

java generics android

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

DataBinding:如何通过动态ID获取资源?

我知道可以通过资源ID引用布局中的资源:

android:text="@{@string/resourceName}"
Run Code Online (Sandbox Code Playgroud)

但是,我想通过id引用资源,这只在运行时才知道.举个简单的例子,假设我们有这样的模型:

public class MyPOJO {

    public final int resourceId = R.string.helloWorld;

}
Run Code Online (Sandbox Code Playgroud)

现在我需要将此值用作格式字符串中的值.我们称之为

<string name="myFormatString">Value is: %s</string>
Run Code Online (Sandbox Code Playgroud)

最直接的方法不起作用:

android:text="@{@string/myFormatString(myPojo.resourceId)}"
Run Code Online (Sandbox Code Playgroud)

这只会将整数值放入占位符(也证明我正确初始化了我的POJO,所以我不在这里提供整个布局).

我也试过使用@BindingConversion,但它没有用(实际上是预期的,但我还是试过了) - int仍然分配给占位符并且没有调用绑定方法.

如何通过DataBinding库中的id显式获取资源?

android android-databinding

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

RecyclerView与网格

管理使用此小部件设置基本列表视图,但我没有找到任何方法来更改布局或显示到网格.

在Google I/O 2014上,他们多次提到RecyclerView可以取代gridview以及listview.L预览中的recyclerView的示例和来源不指向与网格相关的任何内容.

如何让回收商像网格一样?

grid android android-recyclerview

32
推荐指数
0
解决办法
4399
查看次数

如何处理"向上"按钮?

如何处理"向上"按钮(SDK版本11+)?我指的是屏幕顶部的那个,它包含应用程序图标.

在Android Design文章中,它被命名为"向上按钮",但我没有在KeyEvent字段中找到它(或类似的).

android

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

Camera2中的预览回调明显慢于Camera1中的回调

这是2017年,我终于开始从Camera1切换到Camera2.在Camera1中,我非常依赖于setPreviewCallbackWithBuffer()执行实时帧处理,但是在Camera2中,它的工作速度要慢得多,几乎无法使用.

相比之下,在Moto G3上Camera1可以很容易地产生30-40 FPS而在Camera2上我的速度不能超过10-15 FPS.

这就是我的创作方式 ImageReader

imageReader = ImageReader
  .newInstance(
    previewSize.width,        // size is around 1280x720
    previewSize.height,
    ImageFormat.YUV_420_888,  // note, it is not JPEG
    2 // max number of images, does not really affect performance
  );

imageReader.setOnImageAvailableListener(
  callback,
  CameraThread.getInstance().createHandler()
);
Run Code Online (Sandbox Code Playgroud)

回调本身可以完成最小的工作:

Image image = reader.acquireNextImage();
image.close();
Run Code Online (Sandbox Code Playgroud)

我已经检查了类似的答案,比如这个.然而他们的问题是他们使用的是JPEG图像格式而不是YUV_420_888.

如何实现类似于Camera1的性能?

android android-camera2

27
推荐指数
1
解决办法
2247
查看次数

数据绑定 - 如何编写多行声明?

有没有办法用DataBinding库编写多行代码?

我试过跟随,但它抱怨XML格式

android:text="@{
            viewModel.subscriptionExpiration == null
                ? viewModel.field1
                : viewModel.field2
        }"
Run Code Online (Sandbox Code Playgroud)

出现以下错误: Error:(80) Error parsing XML: not well-formed (invalid token)

单行替代工作,但我觉得它不太可读:

android:text="@{viewModel.subscriptionExpiration == null ? viewModel.field1 : viewModel.field2}"
Run Code Online (Sandbox Code Playgroud)

android android-databinding

18
推荐指数
1
解决办法
825
查看次数

如何定义char堆栈?

如何在java中定义char堆栈?例如,要创建一个String堆栈,我可以使用这样的结构:

Stack <String> stack= new Stack <String> ();
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将char放入String时我得到了一个错误:

Syntax error on token "char", Dimensions expected after this token
Run Code Online (Sandbox Code Playgroud)

java

16
推荐指数
3
解决办法
5万
查看次数

如何正确清除ImageView?

例如,在我的Activity中我有这样的代码(我跳过变量的初始化):

ImageView iview; //some ImageView
Bitmap b; //some Bitmap
iview.setImageBitmap(b);
Run Code Online (Sandbox Code Playgroud)

问题是 - 如何正确清除iview资源(有无破坏视图)?ImageView会在之后释放它的资源(在本机代码中使用)b.recycle()吗?

我想,这ImageView的活动后,只是免费的IT资源onStop(或onDestroy).

android imageview

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

数据绑定因NoSuchMethodError而失败

每次当我尝试assemble调试应用程序的构建时,更新到gradle 2.10之后我得到了NoSuchMethodError异常.以下是构建日志的相关部分:

java.lang.RuntimeException: failure, see logs for details.
  cannot generate view binders java.lang.NoSuchMethodError: com.google.common.base.Strings.isNullOrEmpty(Ljava/lang/String;)Z
    at android.databinding.tool.util.StringUtils.capitalize(StringUtils.java:57)
    at android.databinding.tool.util.ParserHelper.toClassName(ParserHelper.java:23)
    at android.databinding.tool.store.ResourceBundle$LayoutFileBundle.getFullBindingClass(ResourceBundle.java:551)
    at android.databinding.tool.store.ResourceBundle$LayoutFileBundle.getBindingClassPackage(ResourceBundle.java:541)
    at android.databinding.tool.CompilerChef.pushClassesToAnalyzer(CompilerChef.java:124)
    at android.databinding.tool.CompilerChef.createChef(CompilerChef.java:73)
    at android.databinding.annotationprocessor.ProcessExpressions.writeResourceBundle(ProcessExpressions.java:148)
    at android.databinding.annotationprocessor.ProcessExpressions.onHandleStep(ProcessExpressions.java:82)
    at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.runStep(ProcessDataBinding.java:154)
    at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.access$000(ProcessDataBinding.java:139)
    at android.databinding.annotationprocessor.ProcessDataBinding.process(ProcessDataBinding.java:66)
Run Code Online (Sandbox Code Playgroud)

如您所见,com.google.common.base.Strings.isNullOrEmpty无法找到Method .

一些细节

我使用Retrolambda 3.2.5和Java 8.没有其他额外的插件.

构建插件版本: com.android.tools.build:gradle:2.0.0

构建工具版本: 23.0.3

OS: OS X

build.gradle看起来像这样.我稍微改了一下,不露出一些私密的东西,但问题仍然存在.

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0'
        classpath 'me.tatarka:gradle-retrolambda:3.2.3'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'

project.version …
Run Code Online (Sandbox Code Playgroud)

android android-gradle-plugin android-databinding

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