小编run*_*ase的帖子

ViewPager的Android事件监听器数据绑定

是否可以使用Android绑定功能将setOnPageChangeListener的处理程序绑定到XML文件中的ViewPager?

演示显示onClick事件,但我很好奇我可以用它实现多少事件功能.关于数据绑定功能的任何链接也都很棒.谢谢.

假设的例子:

example_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

<data>
   <variable name="handlers" type="com.example.Handlers"/>
</data>

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:onPageChangeListener="@{handlers.pageChanged}" />
</layout>
Run Code Online (Sandbox Code Playgroud)

Handler.java

package com.example.viewmodels;

import android.view.View;

public class Handlers {
    public void pageChanged(View view){}
}
Run Code Online (Sandbox Code Playgroud)

编译错误是:

错误:(62)在'android'包中找不到属性'onPageChangeListener'的资源标识符

android android-viewpager android-databinding

11
推荐指数
2
解决办法
7217
查看次数

初始化WeakReference对象以避免空检查

鉴于以下示例代码,有一种初始化方法total,以便我在以后使用它时不必进行空检查.我无法将值传递给构造函数.

public class SampleCode 
{

    private WeakReference<Float> total;

    public SampleCode() {
    }

    public void setWidget(Float total) {
        this.total = new WeakReference<>(total);
    }

    public float calculatePercentage(Float count) {
        if (total == null) {
            return -1;
        }
        if (total.get() == null) {
            return -1;
        }

        return count / total.get();
    }
}
Run Code Online (Sandbox Code Playgroud)

我想在构造函数中做这样的事情:

this.total = new WeakReference<>(null);
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我可以在已发布状态下初始化WeakReference,还是违反了类的目的?

谢谢

编辑

感谢所有的反馈.

  • 浮动的使用是为了简化问题,但我可以完全理解这种混淆.弱引用实际上持有的对象是Android布局中的视图,此类存在于活动生命周期之外.
  • 在计算之前,应将total.get()分配给本地值
  • 声明"这不起作用"与以下内容有关:

total.get() == null在初始化之后评估为false this.total = new WeakReference<>(null); 我现在明白该陈述是不正确的.这将评估为真.但是我认为最好不要将它初始化为null并在访问之前检查null条件.

java weak-references

6
推荐指数
2
解决办法
2964
查看次数

Unity c#,截取屏幕截图并以jpg格式保存到文件中

我正在尝试使用screencapture并将其保存为jpg格式的文件.我正在关注这个例子.

http://docs.unity3d.com/ScriptReference/Texture2D.EncodeToPNG.html

这是我到目前为止:

    string jpgFile = Application.persistentDataPath + "/scrn-1.jpg";
    Texture2D tex = new Texture2D (Screen.width, Screen.height);
    tex.ReadPixels (new Rect(0, 0, Screen.width, Screen.height), 0, 0);
    tex.Apply ();
    var bytes = tex.EncodeToJPG();
    Destroy (tex);
    System.IO.File.WriteAllBytes(jpgFile, bytes);
Run Code Online (Sandbox Code Playgroud)

我发现在iOS上的Unity中运行它给了我:

JPEG参数struct mismatch:库认为大小是372,调用者期望360

但是,如果我将转换更改为tex.EncodeToPNG(); 并将文件名更改为.png一切正常.我不知道如何进行任何援助将不胜感激.谢谢.

c# android texture2d unity-game-engine ios

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