Pri*_*raj 3 android android-activity android-dialogfragment
我正在使用 来AlarmManager将 a 传递PendingIntent给我的BroadcastReceiver5 分钟后。现在,我想DialogFragment向用户显示一个,位于警报响起时用户可能使用的任何应用程序之上。例如,如果用户在闹钟响起时正在使用 Chrome,则我的DialogFragment窗口应该在用户的 Chrome 窗口上方弹出。
我最终得到的是以DialogFragment我的应用程序的空白活动作为背景显示(如下图所示)
https://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);
}
}
Run Code Online (Sandbox Code Playgroud)
接下来,从这个活动中,我弹出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;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题:
我找不到getSupportFragmentManager直接从onReceivemy 中调用的方法BroadcastReceiver,因此假设获取对话框的唯一方法是首先调用创建对话框的“虚拟”活动。有一个更好的方法吗?
不管我的方法是否正确,我预计由于没有调用setContentView(..)AlarmHardActivity,因此不会为其呈现 UI。我的理解有错吗?我还尝试调用setContentView(..)然后将布局标记为具有Theme.NoDisplay和android:alpha="0",但无济于事。
任何帮助都感激不尽。谢谢!
更好的选择不是在活动上显示对话框,而是通过使用对话框主题并将所有边的边距设置为所需的 dp 来使活动看起来像对话框,以便活动被称为对话框大小。
有关几个示例,请查看这些帖子: Android Activity as a dial
| 归档时间: |
|
| 查看次数: |
8637 次 |
| 最近记录: |