我正在参加非活动课。在这个地方,我想从附加到我的项目的第3方库中运行活动。我写了一些我认为可以做到的代码:
Intent intent = new Intent();
intent.putExtra(THIRD_PARTY_ACTIVITY.REPORT_EXTRA, parts.toString());
Activity activity = new THIRD_PARTY_ACTIVITY();
activity.startActivity(intent);
此代码编译成功,但是当我执行它时,出现错误:
由于:java.lang.NullPointerException:尝试调用虚拟 方法'android.app.ActivityThread $ ApplicationThread 空对象上的android.app.ActivityThread.getApplicationThread()' 参考
如何从第三方库中进行活动?
答案 0 :(得分:0)
您做错了。您从不使用new创建活动。无法正确初始化。而是创建一个Intent以启动该Activity并调用context.startActivity()来创建并启动它。
void launchThirdPartyActivity(Context context) {
Intent intent = new Intent(context, THIRD_PARTY_ACTIVITY.class);
context.startActivity(intent);
}
如果活动在库中,那应该可以工作。如果要在设备上的另一个应用程序中启动活动,则可以使用其他Intent构造函数之一(具体取决于您要启动的方式/方式-特定应用程序中的特定活动?可以对特定数据类型执行某项操作(例如共享或查看)的活动?还有其他事情吗?)
答案 1 :(得分:0)
在您的图书馆中,您可以这样做:
Intent intent = new Intent();
// Here you need to set the ACTION or the COMPONENT in the Intent
// so that Android knows which Activity you want to start
// Also, you need to set FLAG_ACTIVITY_NEW_TASK because you aren't calling
// startActivity() on an Activity Context
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(THIRD_PARTY_ACTIVITY.REPORT_EXTRA, parts.toString());
Application.getApplicationContext().startActivity(intent);