java - 使用 XML onClick 时出现 Android Dialog NoSuchMethodException 错误

标签 java android dialog onclick nosuchmethod

我是 Java 和 Android 的新手,我正在开发我的第一个测试应用。

我已经取得了进展,但我被对话框阻止了。

我这样显示 Activity 中的对话框:

//BuyActivity.java
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_shop);

    initialize_PR();
    display_PR();
    BuyDialog=new Dialog(this);
    BuyDialog.setContentView(R.layout.dialog_buy);

}
public void Action_ShowDialog_Buy(View view) {
    BuyDialog.show() ;
}

并且当点击触发 Action_ShowDialog_Buy 的 Activity 的按钮时,对话框会正确显示。但是在那之后,Dialog 本身就有了一个按钮:

<!-- dialog_buy.xml -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<!-- Other stuff -->

<Button
    android:id="@+id/Button_Buy"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/Some_Other_Stuff"
    android:layout_centerHorizontal="true"
    android:text="@string/button_buy"
    android:onClick="Action_ShowDialog_Buy" />

</RelativeLayout>

按钮方法Action_ShowDialog_Buy在Activity上实现:

public void Action_ShowDialog_Buy(View view) {
    BuyDialog.dismiss() ;
}

但是当我点击对话框中的按钮时,我收到错误:

java.lang.IllegalStateException: Could not find a method BuyActivity.Action_ShowDialog_Buy(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.Button with id 'Button_Buy'

及以下:

Caused by: java.lang.NoSuchMethodException:BuyActivity.Action_ShowDialog_Buy

但是正如您在上面看到的,该方法存在于 Activity 上。

我想我明白这是某种范围问题,但我没能理解。请注意,我已阅读 Using onClick attribute in layout xml causes a NoSuchMethodException in Android dialogs但我需要理解,而不仅仅是复制代码。

非常感谢

最佳答案

您正在尝试调用方法“Action_ShowDialog_Buy”,但该方法在 Dialog 对象中不存在!如果您在 xml 中指定此方法,则不应在 Activity 中。如果你想处理 Activity 中的点击,你应该以编程方式设置 onClickListener:

Button b=(Button)BuyDialog.findViewById(R.id.Button_Buy);
b.setOnClickListener(new OnClickListener(){
    @Override
    onClick(View v){
      BuyDialog.dismiss();
    }

});

关于java - 使用 XML onClick 时出现 Android Dialog NoSuchMethodException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12582695/

相关文章:

java - 在 Java 中传递参数数组

java - javax.servlet-api 和 commons-dbcp 在我们的 Spring 应用程序中重要吗?

java - 如何从数组生成 ListView 中的项目?

java - 如何控制对话框背景触摸?

android - ICS 新日期选择器不工作

java - Kyronet 和 androidstudio - TCP 注册期间超时

Java vector 帮助

java - 为什么我得到 java.lang.RuntimeException : Unable to start activity ComponentInfo

android - 如何在 flutter 中获取小部件的坐标、比例和旋转数据?

java - 如果未输入有效整数,如何让程序因错误而终止?