动态显示活动为对话框

时间:2017-03-23 19:54:52

标签: android

我有一个我已经实施过的活动。

它涉及到在应用内购买,因此所有逻辑都是相对自包含的。它不需要关心任何其他事情。

现在,我希望将该Activity设置为可选地显示在其他一些活动的对话框中。有快速的方法吗?然而,我仍然需要保持旧的行为,其中活动显示为常规屏幕。

那么在某种程度上,我可以启动活动,使其显示为对话框?

由于

4 个答案:

答案 0 :(得分:0)

您无法将活动显示为对话框。

您的选择是:

1:用一些布尔额外的东西打开另一个活动,例如" showDialog",true

Intent intent = new Intent(this, OtherActivity.class);
intent.putExtra("showDialog", true);

和(例如)onCreate中的其他活动:

Boolean showDialog = getIntent().getExtras().getBoolean("showDialog");
if (showDialog) {
    // Code to show dialog
}

2:创建DialogFragment并在原始活动中显示它。您可以在两个活动上使用此自定义DialogFragment

https://guides.codepath.com/android/Using-DialogFragment

答案 1 :(得分:0)

根据您的Activity的复杂程度,可能是最干净的选择,是根据您当前的活动创建一个新的DialogFragment。

DialogFragment基本上是一个片段,因此对你的Activity有一组相对类似的生命周期回调,所以它不应该像DialogFragment那样重新工作。

如果应用内购买框架对活动有特定的回调要求,那么您需要考虑到这一点。

另一个单独的选项是通过创建一个可能在主要内容的边框周围透明的Activity来模拟Dialog的外观。

答案 2 :(得分:0)

只需点击onCreate Method,即可为布局增加一个按钮。 我想建议的是尝试警告框,而不是正常的布局会夸大你的活动布局。 这些可能会有所帮助

答案 3 :(得分:0)

最简单的方法是将对话框主题应用于活动:

<activity android:theme="@style/Theme.AppCompat.Dialog" />

或在代码中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.Theme_AppCompat_Dialog);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test);
}

您可以在styles.xml中自定义主题的参数,例如dim enabled / disabled,单击外部行为。

关键点是在setTheme()之前执行super.onCreate(),因为Theme是不可变的,一旦通过super.onCreate()设置,它就不能在以后变异。