このボタンがあるとしましょう:
<Button
android:id="@+id/idone"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="D2"
android:onClick="myMeth"/>
このようなビューを膨らませたアクティビティからメソッドを呼び出すため、これを使用してレイアウト xml からメソッドを呼び出すことが何度かありました。
最近、DialogFragments で、まあ、まったく機能しません。そのようなメソッドが存在しないというエラーが表示され続けます。では、そのような方法をどこで探しているのでしょうか? DialogFragment クラスに追加しました。
public class myActivity extends DialogFragment {
public DiceDialog() {
// empty constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.myDialog, container);
getDialog().setTitle("Hello");
return view;
}
public void myMeth(View view) {
//...
}
FragmentManager をインスタンス化し、ダイアログを呼び出すアクティビティでも同様です。
public Class MainActiviry Extends FragmentActivity {
//...
public void onCreate(Bundle savedInstanceState) {
// ..
FragmentManager fm = getSupportFragmentManager();
MyActivity dialog = new AddDiceDialog();
dialog.show(fm, "tag");
}
public void myMeth(View view){
//...
}
それでも、MyMeth が見つからないというメッセージが表示されます。
インターフェイスとリスナーを使用することが、アクティビティとダイアログ フラグメントの間で通信する正しい方法であることは既に読みましたが、ここで理解しようとしているのは、myMeth 呼び出しが行われている場所です。