我正在使用5 分钟后将AlarmManager
a 传递PendingIntent
给我。BroadcastReceiver
现在,我想DialogFragment
在警报响起时用户可能正在使用的任何应用程序之上向用户显示一个。例如,如果警报响起时用户正在使用 Chrome,我DialogFragment
应该在用户的 Chrome 窗口上方弹出。
相反,我最终得到的DialogFragment
是以我的应用程序的空白活动作为背景显示(如下图所示)
http://i.stack.imgur.com/Vz9IZ.png
这是我在我的BroadcastReceiver
, 中使用的代码来启动FragmentActivity
第一个:
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
Intent hardReminderIntent = new Intent(context, AlarmHardActivity.class);
hardReminderIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(hardReminderIntent);
}
}
接下来,从这个活动中,我弹出DialogFragment
:
public class AlarmHardActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FragmentManager fm = getSupportFragmentManager();
AlarmHardDialog editNameDialog = new AlarmHardDialog();
editNameDialog.show(fm, "fragment_dialog");
//setContentView(R.layout.activity_alarm_hard);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
//getMenuInflater().inflate(R.menu.activity_alarm_hard, menu);
return true;
}
}
我的问题:
我找不到
getSupportFragmentManager
直接从onReceive
my中调用的方法BroadcastReceiver
,因此假设获得对话框的唯一方法是首先调用创建对话框的“虚拟”活动。有一个更好的方法吗?无论我的方法是否正确,我都希望由于
setContentView(..)
在 AlarmHardActivity 中没有调用,因此不会为它呈现 UI。我的理解错了吗?我也尝试调用setContentView(..)
然后将布局标记为具有Theme.NoDisplay
andandroid:alpha="0"
,但无济于事。
任何帮助都感激不尽。谢谢!