小编pro*_*m85的帖子

在Fragment和FragmentStatePagerAdapter中使用ViewPager的片段导致异常(带有完整示例)

我有一个带有ViewPager的简单片段.

我正在使用最新的支持库,v4 rev18!

如果我第一次显示子片段,一切正常,如果我返回并再次显示它,应用程序崩溃时出现以下异常:

我有一个完整的例子显示,当发生以下异常时:

java.lang.NullPointerException
at android.support.v4.app.FragmentManagerImpl.getFragment(FragmentManager.java:569)
at android.support.v4.app.FragmentStatePagerAdapter.restoreState(FragmentStatePagerAdapter.java:211)
at android.support.v4.view.ViewPager.onRestoreInstanceState(ViewPager.java:1281)
at android.view.View.dispatchRestoreInstanceState(View.java:12043)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2688)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2694)
at android.view.View.restoreHierarchyState(View.java:12021)
at android.support.v4.app.Fragment.restoreViewState(Fragment.java:425)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:949)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4800)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

我能够以其他方式在子片段中使用ViewPager,但如果我手动添加/删除子片段并在子片段中使用FragmentStatePagerAdapter,我就无法使用它...

以下示例应该可以工作,但它没有...我已经添加了一些解决了一些问题的代码,但它并没有解决所有问题......

import java.lang.reflect.Field;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.TextView; …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager android-support-library fragmentmanager

9
推荐指数
1
解决办法
9518
查看次数

Firestore - 如何在Kotlin中排除数据类对象的字段

这里的Firestore解释了我如何使用简单的类直接将它们与firestore一起使用:https://firebase.google.com/docs/firestore/manage-data/add-data

如何将字段标记为已排除?

data class Parent(var name: String? = null) {
    // don't save this field directly
    var questions: ArrayList<String> = ArrayList()
}
Run Code Online (Sandbox Code Playgroud)

android kotlin firebase google-cloud-firestore

9
推荐指数
2
解决办法
1466
查看次数

了解删除和删除greenDao中的关系

第一个问题是,greenDao何时为实体生成删除功能?调用entity.delete()和之间的区别是session.getEntityDao.delete(entity)什么?

其次,如果我删除父母与父母有ToOne关系的子实体,我必须自己删除孩子,不是吗?实际上没有自动依赖"清理",是吗?

orm android greendao

8
推荐指数
1
解决办法
3720
查看次数

缺省语言的MissingTranslation("..."未翻译为"en")

我想生成一个签名的apk并得到以下错误:

Error:(65) Error: "..." is not translated in "en" (English) [MissingTranslation]
Run Code Online (Sandbox Code Playgroud)

我的项目只包含默认文件夹(没有语言的插件),例如values文件夹和ONE语言,这是德语(意思是,我有一个values-de文件夹)

我的默认语言是英语,因此所有不属于特殊语言的资源都应该是英语.

质询

android工作室为什么告诉我,它缺少en语言,虽然我没有单个文件夹?也许en-folder是gradle导入的一部分?我可以以某种方式排除它们吗?实际上,我不知道en它来自哪里,因为我不在任何地方使用它......

我只有valuesvalues-de文件夹!

values我有以下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="pause_alarms">
        <item>Silent</item>
        <item>Vibrate</item>
        <item>Sound</item>
        <item>Vibrate + Sound</item>
    </string-array>
</resources>
Run Code Online (Sandbox Code Playgroud)

values-de我有以下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="pause_alarms">
        <item>Leise</item>
        <item>Vibrieren</item>
        <item>Ton</item>
        <item>Vibrieren + Ton</item>
    </string-array>
</resources>
Run Code Online (Sandbox Code Playgroud)

android lint android-resources android-studio

8
推荐指数
1
解决办法
3407
查看次数

RecyclerView上的反弹效果

我想在a上使用反弹效果 RecyclerView.每当我过度滚动内容时都会产生反弹效果......

是否存在库或示例?

android bounce android-recyclerview

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

RecyclerView - 动画更改网格布局管理器列

我想动画我RecyclerView的变化GridLayoutManager.我默认显示一个包含3列的网格中的项目列表,用户可以选择显示更多或更少的列.

我想viewsRecyclerView移动/规模的新位置,但我不知道怎么可以这样做.

我到底想要什么

  • 允许通过展开/收缩触摸手势来缩放网格=>我知道如何做到这一点
  • 动画的变化 LayoutManager

有谁知道我如何动画变化LayoutManager

android android-recyclerview

8
推荐指数
2
解决办法
7237
查看次数

从图像中删除或更新exif缩略图

无论如何从图像中删除exif缩略图?

我在我的应用程序中裁剪图像并使用sanselan库复制所有exif数据无损.然后,我相应地更新宽度/高度/旋转.

我找不到任何方法来更新exif缩略图或删除它,任何想法如何做到这一点?

android exif

8
推荐指数
1
解决办法
499
查看次数

RXJava - 一个接一个地运行多个observable(比如concat,但每个observable都有onCompleted)

有没有办法实现以下目标:

我有3个类型的观察者Observable<MyData>.我想要的是:

  • 运行第一个可观察的
  • 观察onCompleted第一个观察者
  • 运行第二个observable
  • 观察onCompleted第二个可观测量
  • 运行第三个observable
  • 观察onCompleted第三个可观测量

这可以用,concat但我只能观察到最后一次onCompleted.

难看的解决方案

我知道,我可以实现这一目标,如果我onCompleted从前一个事件中开始下一个可以理解的话.

即使使用任意数量的可观察量,还有其他方法可以实现这一点吗?我想避免从onCompleted事件中将这一切联系在一起,因为这看起来非常丑陋,链接越深,它就越不清楚......

编辑 - UseCase

  • 首先,我想发出代表我的应用程序上次启动时加载的数据的数据(我将数据序列化为光盘)=>原因是,我想要一个非常快速的应用程序启动
  • 然后我想要第二次数据加载,以在空状态下加载最新数据
  • 然后我想要第三次加载数据来加载最新数据的缺失深层数据

我想不断更新UI,我想知道,每个级别的数据加载完成

android reactive-programming rx-java

8
推荐指数
2
解决办法
6413
查看次数

微调框下拉列表在滚动时跳跃

为什么微调器在滚动时跳动?我只是在做以下事情:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(v.getContext(), layout, textViewId, new ArrayList<String>());
adapter.setDropDownViewResource(layoutDropdown);
adapter.addAll(<DATA>);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(listener);
Run Code Online (Sandbox Code Playgroud)

只要下拉列表很小,一切都可以正常工作,但是如果它变大并且可以滚动,我会看到它在滚动时会跳来跳去。为什么?

我在滚动时没有更改选择内容或数据,因此令我惊讶的是,这种设置如此简单。任何想法如何解决这个问题?

在此处输入图片说明

android spinner android-arrayadapter

8
推荐指数
1
解决办法
622
查看次数

Gradle 8 - R 文件合并不再起作用?

在我的项目中,我在核心模块中定义了许多字符串。升级到 gradle 8 后,我发现我现在需要引用 R 文件。

例如,如果我在核心模块中定义一个字符串并希望从主模块访问它(主模块当然包括核心模块),我会看到以下行为:

com.my.package.main.R我可以通过和从主模块内的核心模块访问字符串(以及所有其他资源)com.my.package.core.R

现在我只能再从确切的模块访问字符串,所以我需要com.my.package.core.R在主模块内部使用从核心模块访问字符串......

com.google.android.material.R对于来自和 的属性也会发生同样的情况androidx.appcompat...


我错过了迁移步骤吗?或者这真的应该是这样吗?

android gradle

8
推荐指数
1
解决办法
1458
查看次数