我正在尝试制作一个将每个午夜重置为默认视图的应用。
所以,我在MainActivity中设置了一个警报,并且一个扩展BroadcastReceiver的AlarmReceiver
这是AlarmReceiver类:
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Will be executed when Alarm is fired
Toast.makeText(context, "HELLO TEST", Toast.LENGTH_SHORT).show();
}
}
这是我的MainActivity
// VerticalViewPager & adapter
VerticalViewPager verticalViewPager = (VerticalViewPager) findViewById(R.id.verticalViewPager);
adapterViewPager = new CustomPagerAdapter(getSupportFragmentManager());
verticalViewPager.setAdapter(adapterViewPager);
在此示例中,警报每天午夜触发,并写入Toast消息。我想要的是警报改变了ViewPager中显示的当前项目:
// Will set the view I want
verticalViewPager.setCurrentItem(3);
但当然,我不能在onReceive
方法下写这个,因为它不知道verticalViewPager
是什么。我也是OOP的新手。
答案 0 :(得分:0)
有很多方法可以将AlarmReceiver与那些实际上能够完全控制verticalViewPager的组件链接起来。 例如 EventBus (有点旧), RXjava (发布主题)等。
如果应用程序并不总是在午夜运行在前台,那么您更需要深度链接到目标页面(MainActivity?),然后更新Viewpager。