在Fragment中使用观察者

2024-01-25

在片段中使用观察者时遇到问题,我已经实现了自己的 TextViewObserver,并且我不想将其插入片段中:

public class TextViewObserver extends TextView implements Observer {

public TextViewObserver(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

public TextViewObserver(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public TextViewObserver(Context context) {
    super(context);
}

@Override
public void update(java.util.Observable o, Object arg) {
    // TODO Auto-generated method stub
    this.setText(String.valueOf(arg));

}

我的片段代码:

public class MyFragment extends Fragment {
private TextViewObserver mTextView;// = new TextView(this.getActivity());
private ApplicationContext mContext;
private DataObservable mDataObservable;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_6, container, false);
    mTextView = (TextViewObserver) view.findViewById(R.id.sicthtxtview);
    return view;
}

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    mContext = (ApplicationContext) activity.getApplicationContext();
    mDataObservable = mContext.getObservable();

}

@Override
public void onStart() {
    super.onStart();
    mDataObservable.addObserver(mTextView);
}

我的 DataObservable 位于我的类 ApplicationContext 中(扩展应用程序):

public class ApplicationContext extends Application {

private DataObservable _mData;

@Override
public void onCreate() {
    super.onCreate();
    _mData = new DataObservable();
}

public DataObservable getObservable() {
    return _mData;
}

当 DataObservable 发生变化以及 Fragment 中的结果 setText 时,必须通知 MyTextViewObserver。 这是 LogCat 给出的错误:

android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

Thx


在Android中,你只能操作View来自 UI 线程。您可以使用以下命令在 UI 线程上运行一些代码View.post(), 像这样:

@Override
public void update(java.util.Observable o, final Object arg) {
    this.post(new Runnable() {
        public void run() {
            this.setText(String.valueOf(arg));
        } 
    }
}

http://developer.android.com/reference/android/view/View.html#post(java.lang.Runnable) http://developer.android.com/reference/android/view/View.html#post(java.lang.Runnable)

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

在Fragment中使用观察者 的相关文章

  • 如何在android中实现触摸平滑图像橡皮擦?

    我已经从 API 演示中看到了finturePaint java 我想实现触摸平滑橡皮擦 通过在android中触摸移动来擦除部分图像 FingerPaint 告诉我要实现这个 mPaint setXfermode new PorterDu
  • gradle更新后无法找到方法(无法编译项目)

    我尝试将项目中的 gradle 版本更新为 4 1 milestone 1 以下这些说明 https developer android com studio build gradle plugin 3 0 0 migration html
  • android edittext中的字符映射

    我想让我的编辑文本就像我写字符 g 时一样 它是相关的映射自定义字符应该写成印地语中的 我认为应该有字符映射 但没有知识任何人都可以帮助我 怎么做 其他应用程序https play google com store apps details
  • 如何获取每个StorageVolume的可用大小和总大小?

    背景 谷歌 悲伤 计划破坏存储权限 https www xda developers com android q storage access framework scoped storage 这样应用程序将无法使用标准文件 API 和文件
  • Android短音的正确播放方法?

    我正在创建一个应用程序 屏幕上将有多个图像 这些图像将是按钮 点击时会播放短促的声音 我对此进行了研究 只能找到我当前用来播放声音的方法 这似乎根本没有响应 我希望声音能够快速播放并且能够响应多次快速点击 我不确定这在 Android 中是
  • Android Studio:XML 布局中的“包装在容器中”

    编辑 XML 布局文件时 Eclipse 有一项称为 包裹在容器中 的功能 重新格式化 gt Android gt 可让您选择一个或多个视图并在其周围包裹您选择的布局 Android Studio中有类似的东西吗 目前正在实施中 问题 69
  • AdapterContextMenuInfo 始终为 null

    我尝试通过 android 开发文档中的书来做到这一点 this didn t create a menu i don t know why registerForContextMenu getListView setListAdapter
  • Gradle 构建错误:无法从 https://repo1.maven.org/maven2/io/fabric/tools/gradle/maven-metadata.xml 加载 Maven 元数据

    我在 Android studio 中遇到 gradle 构建错误 如下所示 Error A problem occurred configuring project MyApp Could not resolve all dependen
  • fetchUuidsWithSdp 的奇怪 UUID 逆转

    我有一个在树莓派上运行的 python 蓝牙服务器 使用 PyBluez 我在服务器中使用的uuid是 8f86d132 4ab8 4c15 b8df 0b70cf10ea56 我正在打电话device fetchUuidsWithSdp
  • Android WebView里面的ScrollView只滚动scrollview

    在我的应用程序中 我有一个 ScrollView 其中包含一些线性视图 一些文本视图和一个 Webview 然后是其他线性布局等 问题是 WebView 不滚动 Scroll 仅侦听 ScrollView 有什么建议么
  • Bitmap.getPixels() 中的 IllegalArgumentException

    我想将数据从位图复制到int using getPixels 这是我当前的代码 int pixels new int myBitmap getHeight myBitmap getWidth myBitmap getPixels pixel
  • ExoPlayer2 - 如何使 HTTP 301 重定向工作?

    我开始使用 ExoPlayer 来传输一些音频 一切都很顺利 直到我遇到一个带有 301 永久移动 重定向的 URL ExoPlayer2 默认情况下不处理该问题 我已经看过这个线程 https github com google ExoP
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • Android 中如何通过彩信发送图片?

    我正在开发多媒体应用程序 我正在通过相机捕获一张图像 并希望将该图像和文本发送到其他号码 但我不知道如何通过彩信发送图像 MMS 只是一个 http post 请求 您应该使用执行请求额外的网络功能 final ConnectivityMa
  • Android 2.3 模拟器在更新位置时崩溃

    我正在使用 Eclipse 编写和调试 Android 应用程序 我需要做的事情之一是更新设备的位置 因此我尝试使用模拟器控制窗口中的位置控制面板 在 手动 选项卡上 我选择 十进制 输入有效的纬度和经度 然后单击 发送 不幸的是 接下来发
  • 我应该释放或重置 MediaPlayer 吗?

    我有自己的自定义适配器类 称为 WordAdapter 并且我正在使用媒体播放器 名为pronounce WordAdapter 类中的全局变量 我有不同的活动 其中每个列表项都有线性布局 名为linearLayout 我正在设置onCli
  • Android 中的处理程序与异步调用

    目前我正在使用处理程序来调用 Web 服务方法以使其在后台运行 问题是它需要更多的时间来给出响应 在性能方面似乎更昂贵 现在我计划使用异步调用 哪一个是最好的 Android 中的处理程序和异步调用有什么区别 请帮我想出一个最好的解决方案
  • 没有用于警告的设置器/字段 Firebase 数据库检索数据填充列表视图

    我只是想将 Firebase 数据库中的数据填充到我的列表视图中 日志显示正在检索数据 但适配器不会将值设置为列表中单个列表项中的文本 它只说 没有二传手 场地插入值 这让我觉得我的设置器没有正确制作 但 Android Studio 自动
  • 有没有任何代码可以在android中设置壁纸而无需裁剪和缩放?

    我正在创建一个画廊应用程序 我的第一个应用程序 这是我的代码 Bitmap bmd BitmapFactory decodeStream is try getApplicationContext setWallpaper bmd catch

随机推荐

  • ASP.NET Core:是否可以使用HttpClient获取文件并直接返回?

    我有一个内部 API 可以获取并返回文件结果 但是 此 API 没有任何身份验证 角色 权限检查的概念 并且无法修改以执行此操作 我想在现有的 ASP NET Core 2 Web API 上创建一个 Web API 端点来进行权限检查 调
  • Prolog 搜索从列表中减去 2 个元素的可能组合

    这是本页的扩展问题 Prolog 可能删除列表中的元素 https stackoverflow com questions 33652059 prolog possible removal of elements in a list 336
  • 在 Visual Studio 中调试/导航 JS 代码

    有没有办法启用f12 or 查找所有参考文献 across JavaScript文件在视觉工作室 我在用着要求JS在我的 SPA 中注册 js 文件 我在用着骨干JS以及 有什么技巧可以像使用 C net 代码一样在 Visual Stud
  • 优化自定义 WordPress SQL 查询以获取用户元数据

    我有以下查询并且它有效 但由于它的堆积 处理需要非常长的时间 因此 我需要帮助才能更快地获得此查询 SQL查询 在查询中 PRODUCT ID 应替换为 和产品 ID 号 SELECT b order id customer meta me
  • 在 bin 文件夹之外的 ASP.NET 项目中解析程序集

    我怎么能够解析程序集引用在 ASP NET Web 开发服务器的 bin 文件夹之外 这对于没有相同 dll 的副本很有用 什么都不起作用 探测 web config 中的元素 http msdn microsoft com en us l
  • Grep 输出添加额外的破折号和换行符

    我在 mac 上使用 bash 来运行一些 grep 并且使用随 macports 安装的 GNU grep 无论如何 我正在尝试使用 grep 查询 fasta 文件 DNA 序列 序列 ID 在一行上 DNA 序列在下一行 以根据要查询
  • IOS 如何使用 nsscanner 类查找完整的 rss feed 链接

    我正在致力于从基于 RSS feed 的项目中获取数据 通过在 google 上搜索 我发现通常在 HTML 源中以这种格式找到 RSS 链接 所以 我必须使用 nsscanner 类从 HTML 源中查找 RSS feed 的链接 但我不
  • 如何使用 google 地图 api v3 旋转地图方向

    非常简短的问题 因为我在谷歌地图 api V3 文档中找不到答案 我正在寻找一个控件 它允许我控制 修改 api 地图的方向 以便北不在顶部 这可能吗 如果是这样 怎么办 Thanks 你可以这样做45度虚数 https developer
  • 在 Maven 中创建 zip,并在 jar 旁边添加其他文件

    我唯一的 Maven 经验是包含其他库 因此我需要一个非常基本的解释来说明如何使用 Eclipse 在 Maven 中实现某些功能 我想定期创建我的罐子 然后我想再获取 3 个文件 并将所有文件放在 1 个 zip 文件中 我的 zip 内
  • 如何传递对 aframe 组件的引用?

    我正在编写一个自定义 aframe 组件来渲染基于很长的对象数组的网格 Aframe 文档仅将数组列为输入类型 您可以在其中传递属性 它将被解析为数组attributename 1 2 3 我想从外部将 JavaScript 引用传递到组件
  • 相当于WPF中的InvokeRequired

    WPF 中是否有与 Form InvokeRequired 等效的函数 例如调度程序 InvokeRequired 这有点奇怪 因为它没有出现在智能感知中 但您可以使用 var dispatcher myDispatcherObject D
  • 当 GPS(或定位服务)启动/停止时接收通知(通过 BroadcastReceiver)

    我尝试了一种使用 BroadcastReceiver 来侦听的方法提供商 已更改 http developer android com reference android location LocationManager html PROV
  • 如何从 WCF 服务返回干净的 JSON?

    我正在尝试从 WCF 服务返回一些 JSON 该服务只是从我的数据库返回一些内容 我可以拿到数据 但是 我担心 JSON 的格式 目前 返回的 JSON 格式如下 d Age 35 FirstName Peyton LastName Man
  • 估算 scikit-learn 中的分类缺失值

    我有一些带有文本类型列的熊猫数据 这些文本列中还有一些 NaN 值 我想做的是将那些 NaN 归咎于sklearn preprocessing Imputer 用最常见的值替换 NaN 问题出在执行上 假设有一个包含 30 列的 Panda
  • Django ImproperlyConfigured:无法加载 WSGI 应用程序“myproject.wsgi.application”;导入模块时出错

    我几乎全新安装了 django 当我运行时python manage py runserver 它给了我这个错误 配置不正确 无法加载 WSGI 应用程序 myproject wsgi application 导入模块时出错 设置 py W
  • 如何转发带有可变参数的函数?

    在 Swift 中 如何将数组转换为元组 出现这个问题是因为我试图在一个采用可变数量参数的函数内部调用一个采用可变数量参数的函数 Function 1 func sumOf numbers Int gt Int var sum 0 for
  • 检查重复项时的最佳自连接技术

    我正在尝试优化生产中的查询 该查询需要很长时间 目标是根据匹配字段值条件查找重复记录 然后将其删除 当前查询通过 t1 col1 t2 col1 上的内部联接使用自联接 然后使用 where 子句来检查值 select from table
  • 为什么异步端点的过滤器链被调用两次

    我正在开发一个基于 Spring boot 的应用程序 我注意到 对于异步端点 身份验证过滤器被调用两次 对于常规端点 它被调用一次 没找到原因 不过在网上发现了一个问题https jira spring io browse SPR 126
  • 我要释放多少次已分配或保留的对象?

    我正在制作一款 iPhone 游戏 我想释放所有已分配或保留的对象 在里面dealloc我正在释放所有此类对象 但后来我意识到有时我最终会在对象尚未分配时释放它们 所以我想我需要检查一下是否retainCount在我释放它之前是否大于零 我
  • 在Fragment中使用观察者

    在片段中使用观察者时遇到问题 我已经实现了自己的 TextViewObserver 并且我不想将其插入片段中 public class TextViewObserver extends TextView implements Observe