方向改变后的回调变为null

2024-02-27

我有一个FragmentActivity有两个选项卡,分别是ListFragments. Each ListFragment有回调。

回调的示例

回调在内部关联附加(...) method

OnStatusUpdateListener mStatusUpdateCallback;

public interface OnStatusUpdateListener {
    public void onStatusUpdate();
}

@Override
public void onAttach(Activity activity) {
    Log.d(TAG, "onAttach");
    super.onAttach(activity);

    try {
        mStatusUpdateCallback = (OnStatusUpdateListener)activity;
    } catch (ClassCastException e) {
        throw new ClassCastException(activity.toString() + " must implement OnStatusUpdateListener");
    }
}

@Override
public void onCreate(Bundle savedInstanceState) {
    Log.d(TAG, "onCreate");
    super.onCreate(savedInstanceState);

    setRetainInstance(true);
}

后来我和对方沟通FragmentActivity通过这个正常工作正常的回调。

ListFragment, 我有一个ImageButton这将调用一个DialogFragment其中还有一个回调。这个回调是在我的中实现的ListFragment是什么触发了回调null

public void onStatusOption() {
    Log.d(TAG, "onStatusOption");

    // Update stuff

    // Here is where mStatusUpdateCallback is null after rotate
    mStatusUpdateCallback.onStatusUpdate();
}

问题是,如果我在应用程序运行时旋转手机,mStatusUpdateCallback变成null。这当然意味着我无法执行回调。有谁知道如何解决这一问题?

我尝试过的

根据https://stackoverflow.com/a/6029070/935779 https://stackoverflow.com/a/6029070/935779似乎有一个新的参考OnStatusUpdateListener可能已经创建,所以我无法引用旧的,但没有提供解决方案。

我也尝试过按照以下方式保留状态https://stackoverflow.com/a/6787393/935779 https://stackoverflow.com/a/6787393/935779,但据我所知,我无法保存对回调的引用。

我也真的不想这样做android:configChanges="orientation|keyboardHidden"方法,因为这看起来像是一个黑客,而且我的布局在景观上发生了变化。

堆栈跟踪

FATAL EXCEPTION: main
java.lang.NullPointerException
    at com.blug.blah.Fragment.StatusFragment.onStatusOption(StatusFragment.java:197)
    at com.blug.blah.MyActivity.onStatusOption(MyActivity.java:243)
    at com.blug.blah.Dialog.StatusOptionDialog$1$1.onClick(StatusOptionDialog.java:108)
    at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:4627)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:521)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    at dalvik.system.NativeStart.main(Native Method)

当配置Activity被破坏并重新创造。

When Configuration手机的方法改变了onConfigurationChange called.

这样你就可以初始化你的Callbacks in onConfigurationChange

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

方向改变后的回调变为null 的相关文章

  • appcompat_v7 错误

    我发现材料支持库 更新的 appcompat v7 将于 10 月 17 日推出 http www reddit com r androiddev comments 2jd5gl roman nurik material support l
  • Android ListView数组索引过滤后越界

    我认为这是专家的问题 我接到电话getView with positon 出界来自ListView数据列表 当我使用适配器过滤器时会发生这种情况 过滤器publishResults 方法使用小于原始列表的过滤列表填充数据 当新的过滤列表时似
  • Android CirclePageIndicator 不工作

    我无法使用 CirclePageIndicator 加载页面 这是 XML
  • 如何在 Windows Phone 8 中安装 .xap PhoneGap 版本?

    我使用phonegap android开发了一款简单的游戏 但在为Windows iOS Android 黑莓等构建后 它仅适用于Android设备 因此我可以为Android设备安装apk文件 但在Windows xap文件中未检测到Wi
  • Android如何让进度条(圆形)在按下按钮时覆盖全屏?

    我尝试在单击提交按钮时显示进度栏 数据加载完成后它将隐藏 但是 进度条没有覆盖全屏 相反 它被按钮覆盖 请参考截图 应该更容易理解我的意思 我想要实现的是屏幕截图的底部部分 Main4Activity java public class M
  • ViewPager 开关 FragmentPagerAdapter

    我有一个ViewPager这是由一个FragmentPagerAdapter 我想将第一个适配器更换为另外两个 问题是之前加载的所有页面 同时具有第一个适配器 仍然是旧的页面 我查看了源代码FragmentPagerAdapter并猜测问题
  • Orientation改变时如何处理Activity?

    我正在编写一个活动 它从服务器加载数据并使用 ArrayAdapter 将其显示为列表 为此 我显示了一个进度对话框 即加载 同时它从服务器加载所有数据 然后我在处理程序中关闭该对话框 我的问题是 当我更改方向时 会再次显示进度对话框 这是
  • 在 CollapsingToolbarLayout 中设置 minHeight 没有任何效果

    我目前使用 CollapsingToolbarLayout 遇到的主要问题是 无论我尝试什么 工具栏的 minHeight 属性都没有任何效果 我想要的结果是这样的 CollapsingToolbarLayout 具有一定的展开高度和一定的
  • 我应该保留远程数据库的本地副本吗?

    我正在开发一个应用程序 基本上允许人们创建 加入和管理其他人的群组 群组内的人也可以互相发送消息 我一直在想哪条路会更好 保留包含所有信息的远程数据库 包括发送给用户和从用户发送的消息 并让应用程序在每次需要信息时查询服务器 甚至是它以前见
  • 我应该将 onClickListener 放在自定义 ListView 的哪里?

    我正在定制ListView包含 a 的行数CheckBox and a TextView 在我使用自定义之前ListViews使用 SimpleCursorAdapter 我的onListItemClick 工作得很好 我读过我必须添加一个
  • Google Games API 需要 games_lite 函数

    我使用 Google Play 游戏服务 我从官方示例中获取了代码 尝试使用 API 27 和 API 17 所有功能仅在一个帐户 所有者 Google 开发者控制台 下有效 在任何其他帐户下均有效 不行 我明白了 E AndroidRun
  • 将原生 Twilio Android SDK 与 Flutter 集成

    我正在尝试使用 flutter 创建 IP 语音 VOIP 移动应用程序 我还没有看到 twilio 语音 api 的 flutter 插件的实现 所以我使用 MethodChannel 将我的应用程序与本机 android 语音 api
  • 使用 firebase 按最新消息对聊天列表进行排序

    我不知道为什么我陷入了一个问题chatList不按最后一条消息时间或最新消息排序 我尝试过存储timestamp在数据库中和订单子依据时间戳 但它仍然不起作用 不起作用意味着列表不会在每条消息后排序 并继续将列表显示为在第一条消息后排序 看
  • 如何获取 Android 中临时文件的文件大小?

    如果我使用 openFileOutput 创建并写入临时文件 写入完成后如何获取文件大小 我希望这可以帮助你 File file new File selectedPath int file size Integer parseInt St
  • 在多模块项目中访问绑定适配器

    我有一个多模块项目 其中应用程序模块包含我的绑定适配器 而我的功能模块取决于我的应用程序模块 因为它是动态功能模块 应用程序 包含绑定适配器 gt 动态功能模块 存在布局的地方 我在所有模块中启用了数据绑定和 kapt 我无法成功构建应用程
  • 如何在Android data/data/project文件系统中创建文件目录和文件夹

    我正在开发一个视频编辑器程序 并且对 android 和 java 相当陌生 我希望发生的是 当用户按下 创建新项目 按钮时 会弹出一个对话框 询问用户项目的名称 我已经把那部分写下来了 但是我想要的是 当用户在该对话框上按 确定 时 我的
  • setKeyListener 将覆盖 setInputType 并更改键盘

    大家好 我在两个设备之间遇到问题 在实践中使用InputType和KeyListener我正在操纵一个EditText让它从数字键盘接收逗号和数字 有关更多背景信息 请检查我之前的question https stackoverflow c
  • 将 espresso 与自定义 EditText 结合使用

    这是我的布局的一部分
  • 无法在 BlackBerry Playbook 上设置音量

    我在更改黑莓游戏书的音量时遇到问题 首先 我将 Android 应用程序重新打包到 Palybook 应用程序 我需要使用搜索栏更改黑莓剧本的音量 并在搜索监听器中设置音频管理器音量 这是代码 audioManager AudioManag
  • 按照说明后“找不到您尝试购买的商品”

    所以我按照以下说明进行操作http developer android com google play billing billing admin html http developer android com google play bi

随机推荐

  • 通过 jest mock 测试 catch 块

    我试图通过玩笑来测试异步 redux 操作的 catch 块 但是在模拟中抛出一个 catch 会导致整个测试失败 我的行动如下 export function loginUser username password return asyn
  • 使用 Google Apps 脚本操作 DOM

    是否可以隐藏 display none 某些标签并使用 Google Apps 脚本更改 Gmail 下拉列表中的标签顺序 标签 移动 不会 Google Apps 脚本在服务器端运行 它无法访问 Gmail Calendar 或 Shee
  • XStream arrayList 与 XML 之间的转换

    我目前不知道问题出在哪里 第一次使用 xml 我在将 ArrayList 放入 xml 文件并从中取出它时遇到了一些问题 我发现了这个 我尝试以同样的方式做 如何使用 XStream 将对象列表转换为 XML 文档 https stacko
  • Python自动选择串口(适用于Arduino)

    目前 Python 程序必须知道设备 Arduino 位于哪个端口 然后 Python 才能与设备进行通信 Problem 每当设备拔出并重新插入时 其 COM 端口都会发生变化 因此必须再次向 Python 提供正确的串行端口 以便它找到
  • 为什么 Android 6 上没有授予 GCM 权限?

    背景 我正在尝试调查办公室的应用程序需要更改其权限 以便更好地支持 Android 6 问题 我发现哪些权限需要确认 哪些不需要 除了以下一项
  • 运行程序所花费的时间

    如何在文本框或输出中打印程序运行时间 我希望将其显示到 for 循环中 以获取每个 for 循环需要多少时间 你可以尝试 DateTime dt DateTime Now for TimeSpan ts DateTime Now dt te
  • 如何使用其他 Angular 组件中的“templateref”?

    如何使用templateRef来自其他组件模板文件 I have BatmanComponent SpidermanComponent and a JokerComponent 其中一些具有相似的功能 因此我决定创建一个HumanCompo
  • Xamarin 自定义表视图标头

    我想在表视图部分标题的标题中添加一个按钮 即加号按钮 经过研究发现 要做到这一点 您必须创建一个自定义标题 我不知道该怎么做 如何在 xamarin 中为表视图部分创建自定义标头 我也使用 Xaml 和 C 请参阅这些博客文章 https
  • 使用自定义字体为警报对话框项目设置字体

    我正在这样创建一个警报对话框 AlertDialog Builder alertDialog new AlertDialog Builder view getContext alertDialog setCustomTitle null a
  • 使用 where 和 offset fetch 子句的简单选择在 Oracle 中不起作用

    我正在尝试选择行where条件并且需要分页 所以我添加了Fetch with offset 使其动态 子句 但随后它给出了此错误 ORA 00933 SQL 命令未正确结束 位置 414 我的查询 SELECT up NAME upozil
  • 是否可以使用ggplot2中的facet_grid()让annotation_logtics()仅出现在一个子图上?

    我使用以下代码在 ggplot2 中使用facet grid 创建一个包含三个子图的图 day lt c 5 Aug 5 Aug 5 Aug 10 Aug 10 Aug 10 Aug 17 Aug 17 Aug 17 Aug station
  • [myArray addObject:[[objcBlock copy] autorelease]] 在释放数组时崩溃

    我编写了一个类来声明性地描述 UIView 动画序列 我的方法采用动画块的可变参数并将它们放入数组中 所以在我的循环中我想这样做 animations addObject block copy autorelease I first cop
  • 正则表达式匹配回句点或字符串开头

    我想匹配一个单词 然后获取它之前的所有内容 直到第一次出现一个句点或字符串的开头 例如 给定此字符串并搜索单词 regex s Do not match this Or this Or this either I like regex It
  • Elasticsearch 不返回单数/复数匹配项

    我正在使用 elasticsearch 的 php 库来索引和查找我的网站中的文档 这是创建索引的代码 curl XPUT http localhost 9200 test d index numberOfShards 1 numberOf
  • 如何在 SVG 中导出 PNG

    我在导出包含 PNG 图像的 SVG 时遇到一些问题 我在用着D3JS和以下代码 mysvg append image attr width 299 attr height 168 attr xlink href image png var
  • Passport.js 支持ajax 吗?

    我想用passport js进行ajax登录 我有设置 Passport js 的常用代码 route app post api auth login passport authenticate local login successRed
  • 协议“Line”只能用作通用约束,因为它具有 Self 或关联类型要求

    我正在快速使用协议 我认为它类似于其他语言中的 界面 我正在测试它如何处理变量 协议对我来说相当新 因为我从未见过带有非静态变量的接口 我创建了一个车站协议 protocol Station var id String get set va
  • 如果没有 .cs 文件,Web 应用程序将无法发布

    我有一个 asp net Web 应用程序项目 正在通过 Visual Studio 2013 中的 生成 gt 发布 来发布 我正在使用所选的预编译选项发布到文件系统 我的项目在打包 发布 Web 设置屏幕中选择了 仅运行此应用程序所需的
  • @Id 注解属性的 Kotlin 内联类

    在我的业务逻辑中 我必须处理很多实体 ID 所有这些 ID 都是类型String 这可能会导致混乱 尤其是当您将其中几个作为方法参数传递时 所以我考虑引入一点类型安全内联类 我知道 内联类在 v1 3 中仍然被标记为实验性的 然而 有没有人
  • 方向改变后的回调变为null

    我有一个FragmentActivity有两个选项卡 分别是ListFragments Each ListFragment有回调 回调的示例 回调在内部关联附加 method OnStatusUpdateListener mStatusUp