在警报

时间:2017-11-17 11:08:52

标签: java android android-viewpager alarmmanager

我正在尝试制作一个将每个午夜重置为默认视图的应用。

所以,我在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的新手。

1 个答案:

答案 0 :(得分:0)

有很多方法可以将AlarmReceiver与那些实际上能够完全控制verticalViewPager的组件链接起来。 例如 EventBus (有点旧), RXjava (发布主题)等。

如果应用程序并不总是在午夜运行在前台,那么您更需要深度链接到目标页面(MainActivity?),然后更新Viewpager。