Java 如何从一个类调用另一个类

Java 如何从一个类调用另一个类,java,android,Java,Android,在我的Android项目中,有一个MainActivity.java MainActivity extends FragmentActivity{ onCreate(Bundle savedInstanceState){ BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); mB

在我的Android项目中,有一个MainActivity.java

MainActivity extends FragmentActivity{

    onCreate(Bundle savedInstanceState){

       BluetoothManager bluetoothManager =
                (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
        mBluetoothAdapter = bluetoothManager.getAdapter();

    }
  }
如何在下面的类中使用mBluetoothAdapter对象

public class AvailableDevices extends ListFragment {

     // How to call mBluetoothAdapter here
  }

感谢

在类级别(onCreate()方法之前)声明
BluetoothManager BluetoothManager
,其他类应该是内部类

将其作为参数传递给类的构造函数

public class AvailableDevices extends ListFragment {
   private BluetoothAdapter bluetoothAdapter;
   public AvailableDevices(BluetoothAdapter bluetoothAdapter) {
       this.bluetoothAdapter = bluetoothAdapter;
   }
}
或者将其声明为静态公共数据成员

public class MainActivity extends FragmentActivity{

    public static BluetoothAdapter mBluetoothAdapter;

    ..
 }
然后在另一个类中使用MainActivity.mBluetoothAdapter

或者使AvailableDevices成为内部类,并将适配器声明为数据成员:

public class MainActivity extends FragmentActivity{

    private BluetoothAdapter mBluetoothAdapter;
    ..
    class AvailableDevices extends ListFragment {
         //can use mBluetoothAdapter
    }
}

BluetoothManager BluetoothManager=(BluetoothManager)getActivity().getSystemService(Context.BLUETOOTH\u服务)如果我声明为类成员,那么如何在其他类中使用其他类应该是内部类。或者,您可以使用全局变量/pagage进行管理,这是一种对MainActivity的丑陋且完全不必要的依赖。如果使用静态或单例对象,我至少会将其保存在一个单独的类中。就我个人而言,我使用Dagger进行依赖注入,但我想在很多情况下可能是杀伤力过大。
There are two ways known to me-

Using Static variable:

MainActivity extends FragmentActivity{
public static BluetoothAdapter mBluetoothAdapter;
    onCreate(Bundle savedInstanceState){

       BluetoothManager bluetoothManager =
                (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
        mBluetoothAdapter = bluetoothManager.getAdapter();

    }
  }

public class AvailableDevices extends ListFragment {

     // How to call mBluetoothAdapter here
    use in this class as MainActivity.mBluetoothAdapter

  }


2.Passing mBluetoothAdapter to the constructor of the second class.

MainActivity extends FragmentActivity{

    onCreate(Bundle savedInstanceState){

       BluetoothManager bluetoothManager =
                (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
        mBluetoothAdapter = bluetoothManager.getAdapter();

    }
  }

public class AvailableDevices extends ListFragment {
    BluetoothAdapter mBluetoothAdapter=null;
AvailableDevices(BluetoothAdapter mBluetoothAdapter){
     this.mBluetoothAdapter=mBluetoothAdapter;


  }