如何在后台的两个 android 活动之间交换数据以通过蓝牙发送数据?
Posted
技术标签:
【中文标题】如何在后台的两个 android 活动之间交换数据以通过蓝牙发送数据?【英文标题】:How to exchange data between two android activities in background to send data via bluetooth? 【发布时间】:2017-06-21 22:02:05 【问题描述】:我需要将数据从Activity A
传递到Activity B
并在后台向后传递,因为Activity A
具有初始化类的方法,该类正在管理蓝牙连接,我无法从Activity B
初始化该类,因为Activity A 中的方法已经对其进行了初始化。
我尝试制作我需要制作static
的方法,但是从静态方法我无法从我的蓝牙类中调用non-static
方法:
public static void setup(String address)
bt = new Bluetooth(this, handler);
outStringBuffer = new StringBuffer("");
bt.startConn(address);
//Java throws error that bt is non-static
所以我的问题:
-
当它是
non-static
时,有没有办法从另一个类调用setup()
?
如果答案是YES,怎么办?或者如果答案是NO如何在不调用任何方法的情况下传递数据。
请记住startActivityForResult()
或startActivity()
不会解决这个问题,因为我需要多次从Activity B
向A
发送数据,而Activity A
应该从我的蓝牙类中调用发送该数据的方法通过蓝牙传输数据。
P.S我找到了一种使用 ViewFlipper 的方法,但在我的情况下,这太复杂了,无法合并两个类。
而且我不能直接从Activity B
向蓝牙类发送数据,因为Activity A
已经打开了套接字,Java 会抛出无法启动活动之类的异常。
【问题讨论】:
你试图从活动中传递什么类型的数据 我要传递字符串变量 【参考方案1】:好的,这很好...将字符串从活动 1 传递到活动 2,您需要
一种传递和检索它的方法,Intents
public void setUp (String address)
/* start an intent to pass the string data*/
Intent intent = new Intent(GridViewActivity.this, MovieDetailActivity.class);
/* use the intent object to pass string to another activity using putExtra method */
intent.putExtra("your string");
start intent(intent);
然后在您的接收活动中使用 getStringExtra
final String original_title = getIntent().getStringExtra("your string");
那么您可以使用 Intent 和 PutExra 以及 getIntent 和 getStringExtra 方法从活动中传递此变量
您可以在 Google 上搜索更多信息。使用意图从活动中传递数据。
【讨论】:
以上是关于如何在后台的两个 android 活动之间交换数据以通过蓝牙发送数据?的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio中如何在Activity跳转之间传递数据