私は、たとえば5分後にAlarmManagerを渡すため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、BroadcastReceiver最初にダイアログを作成する「ダミー」アクティビティを呼び出すことであると想定しました。これを行うためのより良い方法はありますか?私のアプローチが正しいかどうかに関係なく、
setContentView(..)AlarmHardActivityには呼び出しがないため、UIがレンダリングされないことを期待していました。私の理解は間違っていますか?また、レイアウトを呼び出してからsetContentView(..)、とにマークを付けてみましたが、役に立ちませんでした。Theme.NoDisplayandroid:alpha="0"
どんな助けでも大歓迎です。ありがとう!