【问题标题】:Android - How to check for button click in a custom alert dialog box?Android - 如何检查自定义警报对话框中的按钮单击?
【发布时间】:2015-06-07 20:20:09
【问题描述】:

我有两个按钮:分享、继续。它们都是在一个新的 XML 文件中创建的,因为我想让我的应用程序保持一个漂亮的平面 Windows 8/10 外观 GUI。

我能够显示对话框消息,但我面临的问题是,如何检查用户单击了哪个按钮:共享或继续?我无法为他们设置 onClickListener,因为这个警报对话框是在一个新文件中创建的,因此,如果我尝试这样做,它会使应用程序崩溃。

这是按钮的 XML 代码:

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:id="@+id/share_button"
    android:layout_marginRight="5dp"
    android:text="SHARE"
    android:textColor="#FFFFFF"
    android:textSize="16sp"
    android:background="@drawable/button_blue" />

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:id="@+id/continue_button"
    android:layout_marginLeft="5dp"
    android:text="CONTINUE"
    android:textColor="#FFFFFF"
    android:textSize="16sp"
    android:background="@drawable/button_green" />

以及我将其显示为警告对话框的 java 代码:

Dialog d = new Dialog(MainActivity.this);
d.requestWindowFeature(Window.FEATURE_NO_TITLE);
d.setContentView(R.layout.dialog);
d.show();

【问题讨论】:

  • 我没有理解你所说的“在新文件中创建,因此,它会导致应用程序崩溃”的意思。当您尝试通过 ID d.findViewById(R.id.continue_button); 查找按钮时会发生什么?
  • 当我那样做时什么都不会发生。但那有什么用呢?我的意思是,如果这就是我找到按钮 ID 的方式,那么我该如何设置 onClickListener?
  • 您已经有了按钮的 ID。 Dialog.findViewById() 会返回一个对应的View,您可以为其设置监听器:view.setOnClickListener(...);
  • 按照 Android777 的建议初始化您的按钮。
  • 完美!它奏效了,现在我明白了它是如何工作的。谢谢:)

标签: java android user-interface android-dialog flat


【解决方案1】:

您可以通过dialog d 调用它,即:

    Dialog d = new Dialog(MainActivity.this);
    d.requestWindowFeature(Window.FEATURE_NO_TITLE);
    d.setContentView(R.layout.dialog);
    Button button = (Button) d.findViewById(R.id.share_button);
    Button button2 = (Button) d.findViewById(R.id.continue_button)
    d.show();

然后就可以正常的onClickListener

button.setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
      //STUFF
  }
});

希望对你有帮助;)

【讨论】:

    猜你喜欢
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    相关资源
    最近更新 更多