- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要创建应用程序的免费和付费版本,因此我正在使用一个包含常见 Activity 和资源的图书馆项目。但是我想知道您将如何组织这个:
共享(库) Activity MyActivity.java
在用户单击按钮时启动 DialogFragment。免费和付费应用程序的 DialogFragment 将有所不同。对于免费应用程序,我们将启动 FreeDialog.java
,对于付费应用程序,我们将启动 PaidDialog.java
。这两个对话 fragment 不会出现在库项目中,因为它们没有共享;它们将分别在免费和付费项目中。
我唯一能想到的就是将MyActivity.java
抽象化并在免费和付费项目中扩展它。这些扩展将启动它们各自的 DialogFragments。
另一种方法是在每个项目中重载 fragment 。但是,我不确定这是否可行。
最佳答案
理论上,您可以将 MyActivity
抽象化,并在付费和免费应用程序项目中对其进行子类化。但是,Activity
类与普通 Java 类略有不同,这使事情变得复杂。它们列在 AndroidManifest.xml 中,并且也不是通过简单地新建它们来创建的。它们通常是使用 Intent
创建的。所以,我认为我会避免将 Activity
设为抽象类。
我认为您真正想要的是使用类似 Factory pattern 的东西创建 DialogFragment
的实例,您的公共(public)库不知道将创建哪个 DialogFragment
。您可以非常喜欢工厂,也可以在其他地方阅读所有相关内容,但一个简单的工厂可能适合您:
public class FragmentFactory {
private static String _dialogFragmentClassName;
public static void registerFragment(String className) {
// you might choose to assert if _dialogFragmentClassName != null
_dialogFragmentClassName = className;
}
public static DialogFragment createFragment() {
try {
return (DialogFragment) Class.forName(_dialogFragmentClassName).newInstance();
} catch (Exception e) {
return null;
}
}
}
然后,在您的免费和付费应用程序项目代码中,您将在启动时发出这样的调用(例如,在主 Activity
中):
FragmentFactory.registerFragment(com.mycompany.free.FreeDialogFragment.class.getName());
和
FragmentFactory.registerFragment(com.mycompany.paid.PaidDialogFragment.class.getName());
最后,在公共(public)库代码中,您可以通过调用创建 fragment 的实例
DialogFragment fragment = FragmentFactory.createFragment();
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.fragment_content, fragment);
ft.commit();
关于Android 免费/付费 - 使用库的架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11176113/
根据 this page看来我需要请求身份许可才能在付费扩展中提供免费试用。 有什么办法解决这个问题吗?对于此扩展程序,我不需要访问用户的电子邮件,并且由于它与社交媒体平台一起运行,因此请求许 coc
我有 2 个 iOS 应用 我的应用 1 是付费应用。 我的应用 2 是免费应用。 我只想免费向下载应用程序 2 的用户提供应用程序 1。在 app2 中,我想添加一个链接(或其他内容)以免费下载 a
我在 Google Play 上有一个付费应用程序,我想免费赠送一个副本供其他人试用和查看。我该怎么做?我可以简单地获取签名的 APK 并将其通过电子邮件发送给他们吗?或者我应该制作一个未签名的 AP
我正在开发一个 SEO 应用程序,该应用程序(除其他外)显示随着时间的推移您网站的传入链接数量。 有几种方法可以获取这些数据。抓取 Google“link:yoursite.com”结果为您提供了他们
我需要创建应用程序的免费和付费版本,因此我正在使用一个包含常见 Activity 和资源的图书馆项目。但是我想知道您将如何组织这个: 共享(库) Activity MyActivity.java 在用
当按钮位于顶级文档中时,我为网络工作支付了 Apple Pay。不幸的是,当在 iframe 中打开时,它会引发以下错误: Trying to call an ApplePaySession API
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 7 年前。 Improve
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
我有一个简单的应用程序,可以处理(显示、播放...)用户下载的数据。 IE。当用户下载应用程序(免费)时,它是空的,或者只填充了一些样本数据,但随后用户可以下载他们喜欢的实际内容(并可能通过 Andr
我喜欢在 Android 商业(付费)应用程序中使用自定义字体 FiraSans。除了字体目录位置中的 SIL Open Font License.txt ..我是否需要强制添加其他任何内容,例如:
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 6 年前。 Improve
我们有一个 Android 应用程序,有一些试用期,之后,用户应该通过应用程序内购买来购买该应用程序。 我想知道如何使用 Google Analytics(分析)对其进行衡量: 跟踪帐户类型的最佳方式
昨天接到一个客户的询盘,想建一个类似LMS(Learning Management System)的门户,用于上传和观看视频。 特色: 管理员可以上传视频 有效订阅的注册用户可以在门户网站上观看这些视
是否可以使用带有 JavaScript 的 Google Analytics API 获取有关当前访问者的以下信息? 引荐网站(GA 中的“来源”) 付费或自然(GA 中的“中”) 关键字 第一次/回
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 8 年前。 Improve
请让我知道我们可以将模板应用程序上传到 App Store 吗? 因为我们正在制作一个应用程序,所以这就像一个基于模块的应用程序,因此该应用程序的购买者可以使用应用程序代码在他们的应用程序中使用。 所
我最近发现了这个应用程序 Purchase Apps ,在我使用我的谷歌帐户登录后,它能够以某种方式检索我在谷歌游戏中支付的应用程序。 我正在尝试了解它是如何完成的,因为我想构建一个类似的应用程序,但
我对在 Apple App Store 中使用“付费($1 或 $2 成本)” 提交我的应用程序有疑问。之前我在应用商店提交了很多应用,但这些都是免费的,不是付费的。 在上面的屏幕截图中有一个选项,如
我想要有关访问者如何访问我的网站的信息。在以前版本的 Google Analytics 中,您可以为此使用他们的 cookie(参见例如 Get the referrer, paid/natural
我的应用程序需要翻译 API 服务,并选择了 Google Translate API ,这需要花钱并且需要针对 Google API 进行身份验证。但在搜索过程中,我发现了这个链接,它看起来是免费的
我是一名优秀的程序员,十分优秀!