私は、たとえば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.NoDisplay
android:alpha="0"
どんな助けでも大歓迎です。ありがとう!