3

私は、たとえば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;
    }

}

私の質問:

  1. getSupportFragmentManagerから直接呼び出す方法が見つからなかったため、ダイアログを取得する唯一の方法はonReceiveBroadcastReceiver最初にダイアログを作成する「ダミー」アクティビティを呼び出すことであると想定しました。これを行うためのより良い方法はありますか?

  2. 私のアプローチが正しいかどうかに関係なく、setContentView(..)AlarmHardActivityには呼び出しがないため、UIがレンダリングされないことを期待していました。私の理解は間違っていますか?また、レイアウトを呼び出してからsetContentView(..)、とにマークを付けてみましたが、役に立ちませんでした。Theme.NoDisplayandroid:alpha="0"

どんな助けでも大歓迎です。ありがとう!

4

3 に答える 3

0

アクティビティなしでこのダイアログを表示することはできません。スクリーンショットのようにアプリを実行できますが、背景が透明で ActionBar が非表示になっています。しかし、私はそれをやろうとしたことがないので、うまくいくかどうかはわかりません。

于 2013-02-04T11:28:48.030 に答える