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项目中调用它.
| 归档时间: |
|
| 查看次数: |
6185 次 |
| 最近记录: |