私はJavaとAndroidを初めて使用し、最初のテストアプリに取り組んでいます。
進行しましたが、ダイアログでブロックされています。
アクティビティのダイアログを次のように表示します。
//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をトリガーするアクティビティのボタンをクリックすると、ダイアログが正しく表示されます。しかしその後、ダイアログ自体にボタンがあります。
<!-- 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は、アクティビティに実装されています。
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
ただし、上記のように、メソッドはアクティビティに存在します。
これはある種のスコープの問題だと思いますが、なんとか理解できません。レイアウトxmlでonClick属性を使用すると、AndroidダイアログでNoSuchMethodExceptionが発生することを読みましたが、コードをコピーするだけでなく、理解する必要があることに注意してください。
どうもありがとう