小编Igo*_*lov的帖子

map()和switchMap()方法有什么区别?

LiveData类的这两个方法有什么区别?官方文档和教程对此非常模糊.在map()方法中,第一个参数叫做source,但在switchMap()中它调用了trigger.这背后的理由是什么?

android android-livedata android-architecture-components

42
推荐指数
7
解决办法
9451
查看次数

如何使用BottomSheetDialog?

我想尝试Android支持库23.2中引入的BottomSheetDialog,但它似乎无法正常工作.以下是该文档所说的内容:

当BottomSheetBehavior捕获持久的底部工作表案例时,此版本还提供了BottomSheetDialog和BottomSheetDialogFragment来填充模态底部工作表用例.只需将AppCompatDialog或AppCompatDialogFragment替换为它们的底部工作表,就可以将对话框设置为底部工作表."

所以我把我AppCompatDialog改为BottomSheetDialog:

package my.package.ui.dialog;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.design.widget.BottomSheetDialog;

import my.package.R;

public class AccountActionsDialog extends BottomSheetDialog {
    public AccountActionsDialog(Context context) {
        super(context);

        if (context instanceof Activity) {
            setOwnerActivity((Activity) context);
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayoutInflater().inflate(R.layout.dialog_account_actions, null));
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的布局文件:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#ff0000"
        android:padding="16dp"
        android:text="Delete account"
        android:textColor="#ffffff" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

然后我在我的Activity中使用以下代码:

new AccountActionsDialog(this).show();
Run Code Online (Sandbox Code Playgroud)

我的屏幕变暗,但我的对话框内容不可见.有什么可能遗漏的想法?当我使用AppCompatDialog时,它工作正常.

android android-support-library

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

是否可以强制实施LiveData值的非空性?

有没有办法强制实现LiveData值的不可空性?默认的Observer实现似乎有@Nullable注释,它强制IDE建议该值可能为null并且应该手动检查:

public interface Observer<T> {
    /**
     * Called when the data is changed.
     * @param t  The new data
     */
    void onChanged(@Nullable T t);
}
Run Code Online (Sandbox Code Playgroud)

android android-livedata android-architecture-components

10
推荐指数
4
解决办法
3917
查看次数