来自java的Android startActivityforResult不扩展Activity

时间:2014-02-21 10:01:10

标签: android bluetooth library-project

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

然后我当然是我的Android应用程序在onCreate()中使用这个库项目我做这样的事情

  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
   }
   }

我上面提到的两个选项

  1. 我不知道如何说服mylib调用startActivityForResult

      public class mylib extends Activity
    
  2. 似乎没有做到这一点。

    1. 我可以重载mylib的构造函数来传递活动对象,我不知道如何创建活动对象。
    2. 希望能让它更清晰一点。

1 个答案:

答案 0 :(得分:2)

您可以创建java类的构造函数,该构造函数具有类型为Activity的参数,如下所示

public class MyClass 
{
      private Activity activity;
      public MyClass ( Activity activity ) 
      {
          this.activity = activity;
      }
}

现在您可以使用此activity变量从Java类调用startAcvitiyForResult。