如何在Android中将BluetoothAdapter从一个活动传递到另一个活动?

时间:2016-03-17 16:40:40

标签: java android exception-handling bluetooth android-bluetooth

我有一个名为MainActivity.java的类/活动,我使用BluetoothAdapter BA来检查蓝牙是否打开。我有另一个名为Search.java的类,它搜索附近的蓝牙设备,但必须使用在MainActivity.java中创建的相同BluetoothAdapter。我怎么做?

而且我的MainAactivity.java中有一个按钮,其onClick必须在另一个类中定义,我该怎么做?

对不起,如果这些问题很愚蠢,但我是Android&使用Java的经验很少。

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

  

我有一个名为MainActivity.java的类/活动,我使用BluetoothAdapter BA来检查蓝牙是否打开。我有另一个名为Search.java的类,它搜索附近的蓝牙设备,但必须使用在MainActivity.java中创建的相同BluetoothAdapter。我该怎么做?

(编辑:请参阅下面的编辑,您不需要在您的情况下实现此功能)您可以实施Singleton来存储并获取BluetoothAdapter,这样您就可以在项目的任何地方访问它。它会是这样的:

import android.bluetooth.BluetoothAdapter;

public class BluetoothSingleton {
    private static BluetoothSingleton mInstance = new BluetoothSingleton();
    private BluetoothAdapter mBluetoothAdapter;

    private BluetoothSingleton(){
        // Private constructor to avoid new instances
    }

    public static BluetoothSingleton getInstance(){
        return mInstance;
    }

    public void setBluetoothAdapter(BluetoothAdapter adapter){
        mBluetoothAdapter = adapter;
    }

    public BluetoothAdapter getBluetoothAdapter(){
        return mBluetoothAdapter;
    }
}
  

而且我的MainActivity.java中有一个按钮,其onClick必须在另一个类中定义,我该怎么做?

你可以简单地创建一个方法来设置那个按钮监听器,像这样传递OnClickListener

AnotherClass.java:

...
public void setButtonListener(View.OnClickListener listener){
    mButton.setOnClickListener(listener);
}
...

然后您可以在MainActivity.java中设置它:

...
AnotherClass another = new AnotherClass();
another.setButtonListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Do what you want here
        }
    });
...

编辑1:

实际上是BluetoothAdpater is a singleton,所以你可以致电:

BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();

你将获得相同的适配器。