【问题标题】:How can I have a home screen shortcut launch a dialog?如何让主屏幕快捷方式启动对话框?
【发布时间】:2012-02-07 07:35:56
【问题描述】:

好的,我问了另一个问题here 试图让我的活动看起来像对话。我在想,也许与其问具体的方法,不如问我想做什么,也许有不同的方法可以去做……

这就是我所拥有的。我的应用程序允许将快捷方式放置在主屏幕上。创建快捷方式的代码和逻辑都完美无缺,然后快捷方式启动适当的活动,显示它应该做什么......再次,一切都完美无缺。

我想知道的是,有没有办法让主屏幕快捷方式启动我的活动作为对话框(而不是简单地试图让我的活动看起来像一个对话框)?

【问题讨论】:

  • 好吧,我不喜欢调整 android 布局以表现得像对话框或其他方式。每当您觉得需要做类似的事情时,请知道您需要改进您的应用架构设计。

标签: android dialog shortcut homescreen


【解决方案1】:

将此添加到您的清单中,在您希望看起来像对话框的活动中,声明:

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

更多信息和主题: http://developer.android.com/guide/topics/ui/themes.html

此外,您可以通过编程方式使用以下代码:

public class ShowDialogActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    //
    //Log.d("DEBUG", "showing dialog!");

    Dialog dialog = new Dialog(this);
    dialog.setContentView(R.layout.select_dialog_singlechoice);
    dialog.setTitle("Your Widget Name");
    dialog.setCancelable(true);
    dialog.setCanceledOnTouchOutside(true);
    TextView text = (TextView) dialog.findViewById(R.id.text1);
    text.setText("Message");

    dialog.show();
    //
   dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {

    public void onCancel(DialogInterface arg0) {
        finish();
    }

   });
}

}

您可以为对话框选择所需的任何布局并根据需要进行设计。

此外,您还需要在清单中为以下内容设置此活动声明:

<activity android:name=".ShowDialogActivity"
          android:theme="@android:style/Theme.Translucent.NoTitleBar">
</activity>

希望这就是你想要的,Gal。

【讨论】:

  • 谢谢。这就是我自己做的,我在另一个问题中采用的方法——试图让我的活动看起来像一个对话。这让它到了一半......让它“浮动”并给它系统主题中定义的轮廓或发光边框。它不会为活动的标题栏设置主题以匹配对话框的标题。我可以复制对话标题在我的系统上的外观......但是它们将不匹配,例如在运行 SenseUI 或 TouchWiz 的系统上。我想使用 SDK 对话框函数调用我的活动,以便它匹配用户的手机主题,而不是我在其中硬编码的任何内容。
  • 我已经编辑了我的答案,按照您的要求进行程序化对话管理,希望对您有所帮助。
  • 感谢 Gal,...从我所见,它看起来可能会如我所愿。今晚我回家后必须尝试一下。像这样“对话”本身的活动应该仍然能够响应intent-filters,而不会出现任何我期望的问题,对吗?
  • 没有一个我能想到的......它就像一个正常的活动,所以它应该具有“非对话”活动的相同功能。如果某些特定的东西不起作用,请告诉我,我会尽力提供帮助。
  • 好吧,我无法让它在我的应用程序中工作,......所以将它分解为一个简单的测试应用程序以进行代码隔离。这并没有给我主题标题栏,但我通过使用AlertDialog 而不是Dialog 得到了它。在我还使用此问题 (stackoverflow.com/questions/5184065/…) 将主要活动隐藏在对话框后面之后,TEST 应用程序现在看起来完全符合我的预期。现在只是想弄清楚如何将我的逻辑移植到对话框中(SingleSelect 方法我认为)。感谢您的指导和帮助!
猜你喜欢
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
  • 2020-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多