startActivityForResult

startActivityForResult

对于蓝牙库,我想调用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/

10-10 05:30