3

このボタンがあるとしましょう:

<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 呼び出しが行われている場所です。

4

1 に答える 1

0

に実装public myMeth(View view)するActivityと、現在表示されている がチェックされ、Fragmentそのメソッドが呼び出されます。

で複数の呼び出し可能なメソッドを使用する場合Fragmentは、呼び出しビューの ID を利用して を実装しswitch、の ID に従って別のフラグメント メソッドを呼び出すことができますView

于 2012-09-10T16:01:40.443 に答える