首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Transformations.map()返回空值

Transformations.map()返回空值
EN

Stack Overflow用户
提问于 2020-07-18 12:12:44
回答 2查看 1.2K关注 0票数 1

我正在编写一个程序,其中我有两个LiveData对象,如下所示:

代码语言:javascript
运行
复制
    public LiveData<placeImages> chosenImages;
    public LiveData<List<Bitmap>> chosenBitmaps= Transformations.map(chosenImages, (placeimags) ->
    {
        ArrayList<Bitmap> bitmaps=new ArrayList<Bitmap>();
        for(PhotoI photoI:placeimags.images)
        {
            try {
                Bitmap b=getThumbnail(app.getContentResolver(),photoI.imageURI);
                if(b!=null) {
                    bitmaps.add(b);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return bitmaps;
    });

问题是,每当我观察到chosenImages LiveData时,它都能正常工作,但是当我观察chosenBitmaps LiveData时,它会返回以下错误:

代码语言:javascript
运行
复制
2020-07-18 17:40:39.790 32164-32164/com.nisarg.locsav E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.nisarg.locsav, PID: 32164
    java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.lifecycle.LiveData.observeForever(androidx.lifecycle.Observer)' on a null object reference
        at androidx.lifecycle.MediatorLiveData$Source.plug(MediatorLiveData.java:141)
        at androidx.lifecycle.MediatorLiveData.onActive(MediatorLiveData.java:118)
        at androidx.lifecycle.LiveData$ObserverWrapper.activeStateChanged(LiveData.java:437)
        at androidx.lifecycle.LiveData$LifecycleBoundObserver.onStateChanged(LiveData.java:395)
        at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:361)
        at androidx.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.java:300)
        at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:339)
        at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:145)
        at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:131)
        at androidx.fragment.app.FragmentViewLifecycleOwner.handleLifecycleEvent(FragmentViewLifecycleOwner.java:51)
        at androidx.fragment.app.Fragment.performStart(Fragment.java:2737)
        at androidx.fragment.app.FragmentStateManager.start(FragmentStateManager.java:365)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1194)
        at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224)
        at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997)
        at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953)
        at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
        at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413)
        at android.os.Handler.handleCallback(Handler.java:794)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:176)
        at android.app.ActivityThread.main(ActivityThread.java:6635)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)

我认为Transformations.map()正在返回空值。我以前在一个项目中做过类似的事情,在我使用Transformations.map()时也发生了同样的事情。有人知道为什么会这样吗?

EN

回答 2

Stack Overflow用户

发布于 2021-12-24 17:31:58

想必在MutableLiveData后面有一个chosenImages

当该MutableLiveData未通过使用noargs构造函数new MutableLiveData<placeImages>()初始化时发生了什么,而Transformations.map()派生的LiveData也没有初始化,因此产生了null

解决方案是在创建时初始化MutableLiveData,即使它被初始化为null:new MutableLiveData<placeImages>(null),以便派生也被初始化。

票数 1
EN

Stack Overflow用户

发布于 2021-02-23 18:51:05

public LiveData<placeImages> chosenImages;更改为

public LiveData<placeImages> chosenImages = MutableLiveData()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62968431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档