所以我的标题可能难以理解,但我会尝试澄清并扩展我的问题。
我目前有一个应用程序,它作为MainActivity开始,其中有多个Fragment位于ViewPager中。
在MainActivity中,我设置了Android In-App Billing V3(库)设置,以便用户付费删除广告。这在MainActivity中运行得很好但是在转移到另一个Activity时出现了问题。
启动应用程序时,用户看到的第一个片段包含带有项目ArrayList的RecyclerView。要从MainActivity访问子活动,用户按下RecyclerView中其中一个项目上的按钮,这意味着用于更改活动的Intent数据包含在RecyclerViewAdapter中。
我的问题是,一旦我的应用知道用户付费删除广告,我希望该应用也可以删除所有子活动中的广告。
我不知道如何通过活动传递此信息("移除广告"应用内购买) - >子活动,当通过RVAdapter启动子活动时。
所以我的问题是:我如何从MainActivity传递数据 - > RVAdapter - >子活动?
或者是否有一种更好,更有效的方法来传递这些数据而不使用Intents?请告诉我!
我对这个问题的描述是否有意义?希望如此!否则请告诉我如何澄清它!如果您需要我粘贴任何代码,请告诉我。
感谢您的任何帮助!
答案 0 :(得分:1)
你可以使用EventBus(greenrobot)漂亮的库来发送事件linke
发送evnts
将库下面的方法添加到您的主要活动之后:
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event)
不要忘记注册和取消注册订阅者,这样做:
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
最后发布你的活动,比如你的子活动:
EventBus.getDefault().postSticky(new MessageEvent());
注意:我添加了postSticky();将数据缓存在内存上,然后粘性事件可以传递给订阅者或明确查询。
更好的解决方案
但我认为你可以在purcahse之后在Sharedpreferences中节省价值:
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME,
MODE_PRIVATE).edit();
editor.putBoolean("pay", true);
editor.apply();
然后检查onCreat方法上每个Activity的值 显示添加或不添加
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
pay = prefs.getBoolean("pay", false);
if (pay) {
show();
}else dontShow();