对于蓝牙库,我想调用startActivityForResult
启用蓝牙。我想在自己的图书馆项目中做到这一点。问题是sartActivityForResult
仅适用于活动,我的库不是活动,当然,使用此库项目的我的项目具有活动。我尝试了两件事
1。
有我的库来扩展Activity,所以我像普通的POJO
一样创建对象。因此,当调用startActivityForResult时,它将引发一个空指针。
2。
试图让我的Activity传递给我的库对象的构造函数。我无法获取活动对象,只能获取上下文,但这无济于事。
我能做什么?
编辑:一些代码
我的图书馆项目中有以下课程:
public class mylib
{
public mylib()
{
// Do some bluetooth setup thing here
// figure out that bluetooth is not enabled so try to enable it now
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
onActivityResult()
{
// Report back that BT is enabled now
}
}
然后我当然有在onCreate()中使用此库项目的Android应用程序,我这样做是
public class Myactivity() extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
// do all the normal stuff
mylib pojo = new mylib(); // This creates a POJO which needs to startActivityForResults(...), see above code
}
}
我上面提到的两个选项
我看不出如何说服mylib调用startActivityForResult做
public class mylib extends Activity
似乎并不能解决问题。
我可以重载mylib的构造函数以传递活动对象,但我不知道如何创建活动对象。
希望这使它更加清晰。
最佳答案
您可以创建Java类的构造函数,该构造函数的参数类型为Activity,如下所示,
public class MyClass
{
private Activity activity;
public MyClass ( Activity activity )
{
this.activity = activity;
}
}
现在,您可以使用此
activity
变量从Java类中调用startAcvitiyForResult。关于android - 来自Java的Android startActivityforResult不扩展Activity,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21931051/