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 并实现 a switch,根据View.

于 2012-09-10T16:01:40.443 回答