从Android中的库项目调用应用程序活动

OVE*_*ONE 4 android android-intent android-library library-project android-activity

好,

所以我正在制作一个UI元素的库项目.该库有一些基于ActionBarSherlock的活动,它是android中操作栏的向后兼容库.在这些活动中,我想在操作栏中有一个按钮,无论用户在图书馆项目中使用哪种活动,都会将其带回家.

一些术语."库"指的是我正在研究的Android UI库项目."应用程序"是指开发人员可能在使用库时使用的任何客户.

通常,当你进行一项活动而你想打电话给另一项活动时,你会做这样的事情.

intent = new Intent(this, WhateverMyActivityName.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

很简单.但这是棘手的一点.Android库几乎不知道什么应用程序正在使用它们.所以'WhateverMyActivityName.class'是无用的,因为没有办法预测开发人员应用程序将调用他们的活动.

我需要更换

intent = new Intent(this, WhateverMyActivityName.class);
Run Code Online (Sandbox Code Playgroud)

有这样的东西

intent = new Intent(this, getApplication().MainActivity().getClass());
Run Code Online (Sandbox Code Playgroud)

或者可能使用某种意图动作来调用应用程序中的主Activity (Intent.ACTION_MAIN or Intent.CATEGORY_LAUNCHER)

简而言之:如何从库项目中获取应用程序主要活动?

Gan*_*y C 11

我们可以使用反射来获取类对象.

的Class.forName( "com.mypackage.myMainActivity")

在Library项目中添加此代码以进行调用,

try {
      Intent myIntent = new Intent(this,Class.forName("com.mypackage.myMainActivity"));
      startActivity(myIntent );
} catch (ClassNotFoundException e) {
     e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

"com.mypackage.myMainActivity"是Main项目中的Activity,我们需要从它的Library项目中调用它.