我是一名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_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>
在Activity上实现了按钮方法Action_ShowDialog_Buy:
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'
and below:
Caused by: java.lang.NoSuchMethodException:BuyActivity.Action_ShowDialog_Buy
但正如您在上面看到的,该方法存在于Activity中。
我认为我理解了这是某种作用域问题,但我没有理解它。请注意,我已经阅读了在Android对话框中使用布局xml中的onClick属性会导致NoSuchMethodException,但我需要理解,而不仅仅是复制代码。
非常感谢
initialize_PR(); display_PR(); BuyDialog=new Dialog(this); BuyDialog.setContentView(R.layout.dialog_buy);
} public void Action_ShowDialog_Buy(View view) { BuyDialog.show() ; } - Pashahide
方法在哪里。 - Pasha