【问题标题】:Send Data from an Activity to a class in Android将数据从 Activity 发送到 Android 中的类
【发布时间】:2014-09-19 20:12:03
【问题描述】:

我有这个问题: 我有一个 Activity 和两个类 MyGLSurfaceView , MyGLRenderer

在 Activity 中有一个线程会生成不同的数字,我必须将此变量发送到 MyGLRenderer。

我不能通过构造函数的参数传递这个变量:/ 将变量从活动发送到类有不同的模式吗?我该怎么办?

【问题讨论】:

  • MyGLRenderer 中创建一个允许活动发送值的方法。
  • 问题是在 Activity 中没有 MyGLRenderer 对象,只有一个 MyGLRenderer 变量。因此唯一的模式是在 MyGLSurfaceView 中实现一个函数,它调用 MyGLRenderer 的函数?没有别的办法了吗?也许我可以这样做:myglviewobject.myrendererobject.variable 吗?
  • “MyGLRenderer 对象,但只有一个 MyGLRenderer 变量”...嗯...听起来您需要了解什么是引用变量。或者这是您评论中的错字?
  • "也许我可以做:myglviewobject.myrendererobject.variable" 这当然是一种解决方案。但是,它需要非常紧密的耦合,这被认为是一个坏主意。

标签: android class variables android-activity


【解决方案1】:

也许这不是很明确的解决方案,但您可以考虑使用 EventBus https://github.com/greenrobot/EventBus 这适用于某些受限的特定于 android 的情况。

在你的类构造函数中注册EventBus

EventBus.getDefault.register(this);

register()/unRegister() 在您的活动onCreate()onDestroy() 方法中。

当您只需要发布来自activity 的值时,就像

EventBus.getDefault().post(new WhateverObject());

并在其他类中接收值

public void onEvent(WhateverObject object){
//doing stuff
}

【讨论】:

  • 谢谢 :) 您的解决方案和声明公共变量具有相同的性能?
  • 当然不是那么快(我们在生产环境中使用它并支持 minSdk 7 效果很好),它很好地解耦了活动和类,去除了冗余接口。
【解决方案2】:

您可以更改构造函数以匹配您发送的参数

eg: 如果你想传递字符串

MyGLRenderer(String s)
{
// store it to local variable and use it
}

您可以在 MyGLRenderer 类中声明一个公共变量并从您的 Actvity 中设置它

【讨论】:

  • 感谢大家:) 我选择了公共变量的解决方案,因为我认为这对我来说更容易解决:)
猜你喜欢
  • 2016-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
  • 1970-01-01
相关资源
最近更新 更多