我是 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/