小编Uni*_*121的帖子

使用ClusterManager时如何在Map上更新标记

我正在尝试使用来自服务器的更新数据更新我的地图,但我无法弄清楚如何从地图中删除旧项目(标记和群集 - 使用ClusterManager)( - 在我看来,我只能在ClusterManager中添加.

我有BroadcastReceiver,当有新数据时它会获得意图.我正在尝试这样的事情:(但它在"... getMarkers().clear();"上给了我UnsupportedOperationException .

private BroadcastReceiver myRefrestMapBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(TAG, "onReceive");
        mClusterManager.clearItems();
        mClusterManager.getMarkerCollection().getMarkers().clear();
        mClusterManager.getClusterMarkerCollection().getMarkers().clear();
        mClusterManager.addItems(LocationGetter.getReports());
    }
};
Run Code Online (Sandbox Code Playgroud)

添加的数据仅用于此功能.

java.util.Collection<Marker> userCollection = mClusterManager.getMarkerCollection().getMarkers();
            ArrayList<Marker> userList = new ArrayList<Marker>(userCollection);
            // now is userList empty
            for(Marker marker: userList){
                marker.remove();
            }

            java.util.Collection<Marker> userCollection2 = mClusterManager.getClusterMarkerCollection().getMarkers();
            ArrayList<Marker> userList2 = new ArrayList<Marker>(userCollection2);
            // now is userList2 empty
            for(Marker marker: userList2){
                marker.remove(); …
Run Code Online (Sandbox Code Playgroud)

java android google-maps google-maps-api-3 markerclusterer

8
推荐指数
3
解决办法
7413
查看次数

使用"with"功能

是否有人可以解释我使用"with"功能?

签名

public inline fun <T, R> with(receiver: T, f: T.() -> R): R = receiver.f()
Run Code Online (Sandbox Code Playgroud)

文件

以给定接收器作为接收器调用指定的函数f并返回其结果.

我发现它在这个项目中使用了Antonio Leiva.它用于移动视图:

fun View.animateTranslationY(translationY: Int, interpolator: Interpolator) {
    with(ObjectAnimator.ofFloat(this, "translationY", translationY.toFloat())) {
        setDuration(context.resources.getInteger(R.integer.config_mediumAnimTime).toLong())
        setInterpolator(interpolator)
        start()
    }
}
Run Code Online (Sandbox Code Playgroud)

我在想,我知道将其转移到的意义

fun View.animateTranslationX(translationX: Int, interpolator: Interpolator) {
    with(ObjectAnimator()) {
        ofFloat(this, "translationX", translationX.toFloat())
        setDuration(context.resources.getInteger(R.integer.config_mediumAnimTime).toLong())
        setInterpolator(interpolator)
        start()
    }
}
Run Code Online (Sandbox Code Playgroud)

但它没有编译......但我认为这ObjectAnimaton是接收器,它会得到我将在{}括号中调用的所有内容.任何人都可以解释真正的意义并提供一个基本的例子 - 至少比这更基本吗?:d

animation android kotlin

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

自定义对象列表和Parcelable给出NullPointerException

我试图理解Android中Parcelable的原理,我编写这个简单的代码来查找当我尝试"包裹"自定义对象列表时发生的事情 - 它给出了我的NullPointerException

这是我的代码:

package cz.united121.android.testpupose.Objects.HelperObject;

import android.os.Parcel;
import android.os.Parcelable;

public class MyString implements Parcelable {
private static final String TAG = MyString.class.getName();


String mString;

public MyString(){

}

public MyString(String mString){
    this.mString = mString;
}

public MyString(Parcel in){
    mString = in.readString();
}

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeString(mString);
}

public static final Parcelable.Creator<MyString> CREATOR
        = new Parcelable.Creator<MyString>() {
    public MyString createFromParcel(Parcel in) {
        return new MyString(in);
    }

    public MyString[] …
Run Code Online (Sandbox Code Playgroud)

java android nullpointerexception parcelable

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

关闭应用程序后获取 NullPointerException - android

关闭(并设备上最近的应用程序中删除)我的应用程序后,我收到此错误,它每次都会发生。

09-22 23:44:28.503    4021-4021/? I/art? Late-enabling -Xcheck:jni
09-22 23:44:28.584    4021-4021/cz.united121.android.revizori D/cz.united121.android.revizori.App? onCreate
09-22 23:44:28.642    4021-4021/cz.united121.android.revizori D/cz.united121.android.revizori.service.MyUpdatingService? onCreate
09-22 23:44:28.677    4021-4021/cz.united121.android.revizori D/AndroidRuntime? Shutting down VM
09-22 23:44:28.679    4021-4021/cz.united121.android.revizori E/AndroidRuntime? FATAL EXCEPTION: main
    Process: cz.united121.android.revizori, PID: 4021
    java.lang.RuntimeException: Unable to start service cz.united121.android.revizori.service.MyUpdatingService@3a7bf84e with null: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getAction()' on a null object reference
            at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2913)
            at android.app.ActivityThread.access$2100(ActivityThread.java:148)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1390)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5312)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372) …
Run Code Online (Sandbox Code Playgroud)

java service android nullpointerexception

2
推荐指数
1
解决办法
2632
查看次数

我可以在Java中使用charAt吗?

当我尝试乘以charAt时,我收到了"大号":

String s = "25999993654";
System.out.println(s.charAt(0)+s.charAt(1));
Run Code Online (Sandbox Code Playgroud)

结果:103

但是当我想只收到一个号码时,没关系.

在JAVA文档中:

the character at the specified index of this string. The first character is at index 0.
Run Code Online (Sandbox Code Playgroud)

所以我需要解释或解决方案(我认为我应该将字符串转换为int,但在我看来这是不必要的工作)

java string char

0
推荐指数
1
解决办法
3194
查看次数