如何通过活动之间的信息(How to pass information between Activi

2019-10-16 21:00发布

我问这个问题了几次就到这里了,但仍是没有足够的信心,开始扔东西到我的代码,因为我怕我会毁了它已经拥有的功能。

我想要做的是有,我可以发送/接收来自数据/,并能够从几个不同的活动访问它的设备的蓝牙连接。 我知道意图可以使用,但任何人都可以尝试解释意图是如何工作的?

我不知道如何,如果我开始一个活动,我怎么可以构建活动中的一个对象,然后结束它,仍然有对象。 当我打电话的意图在下面的活动,我该如何访问呢?

我无法找到与经过意图通过自定义对象,在另一个活动开了一个活动的示例代码,然后通过另一个活动再次通过,等等。 所有我能找到的东西串的,诚信的,似乎这些方法是硬编码的特定对象。

任何帮助将不胜感激,谢谢。

Answer 1:

有你没有找到让渡的对象复杂化一个很好的例子,一个很好的理由:你不认为到了很多。 它可能与意图额外的任何物体转移,与申报要传送的实现Serializable,或Parcalable类。

但是 - 这是不推荐这样做,除非你有很好的理由。 有无限的方法来创建“交叉活动”的对象(数据库,singeltones,服务..),并通过复杂的对象意图是繁重的操作。 也这让可怕的表演这样做。

无论如何 - 。如果你想这样做,就是这样:

这是如何传递serlizable对象:

Intent intent =  new Intent();
    intent.putExtra(name, someInstanceOfClassWhichImplementsSerializableInterface);

这是怎么acheive它的其他活动:

getIntent().getSerializableExtra(name);

关于您不了解如何对象仍居住在完成后该活动的问题- 完成()活动没有触发牵张!!!,但做触发器onDestoy()回调 。 当它是正确的时间调用活动distracor,以及系统决定即使是牵引器 - 这不是从意图对象防止活下去 - 因为没有人说你的活动是国内唯一一家持有引用。 系统为它传递到它打开了新的活动的perpose举行的意图参考。



Answer 2:

如果你想从一个活动传递一个自定义对象到另一个,你的目标必须实现Parcelable接口。

在这里你可以找到一个实现Parcelable对象的实例。 一旦你有了这个对象的实例,你可以把它添加到一个意图,并把它传递给其他的活动。

比方说,你有2个活动:A和B.如果你想从A发送自定义对象到B尝试把你的parceable对象的意图,并把它找回来的活动B.

// Activity A
Notebook myNotebook = new Notebook(); // the "Parcelable" object
Intent intent = new Intent(A.this, B.class);
intent.putExtra("object", myNotebook);
startActivityForResult(intent);

// Activity B
// in onCreate method
Notebook notebook = intent.getParcelableExtra("object");


Answer 3:

使用意图,您可以发送序列化对象这就好比你转换成对象字节流。 如果你想发送你的对象,因为它是你可以使用处理程序。 例如

  1. 创建蓝牙连接使用服务(机器人服务)
  2. 定义你的活动处理程序,这将是静态对象
  3. 从服务发送的对象添加到msg.obj发送味精处理程序


文章来源: How to pass information between Activities