如何通过单击TextView打开DialogFragment

时间:2014-12-02 16:29:30

标签: java android textview android-dialogfragment

我有一个MainActivity,如下所示:

enter image description here

我的问题是如何打开DialogFragment点击TextView点击此处,为“播放”按钮旁边的任务命名。

以下是我TextView的代码:

TextView buttonView = new TextView(this);
buttonView.setHint("click HERE to give a name to the task");
buttonView.setX(50);
buttonView.setY(50);

以及DialogFragent的代码:

public class ButtonNameDialogFragment extends DialogFragment {

    private IFragment iButNamFrag;

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder setButNameAlert = new AlertDialog.Builder(getActivity());

        setButNameAlert.setTitle("Set Task name");

        LayoutInflater inflater = getActivity().getLayoutInflater();

        setButNameAlert.setView(inflater.inflate(R.layout.button_name_fragment, null))
            .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Implement dialogPositiveClick

                }
            })
            .setNegativeButton(R.string.undo, new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Implement dialogNegativeClick 

                }
            });

        return setButNameAlert.create();

    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        iButNamFrag = (IFragment) activity;
    }

}

这是界面:

public interface IFragment {

    public void onDialogPositiveClick(DialogFragment dialog);
    public void onDialogNegativeClick(DialogFragment dialog);

}

2 个答案:

答案 0 :(得分:1)

您可以将onClickListener设置为Android中的任何视图,然后执行您想要的任何行为

buttonView.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // Create new DiaglogFragment and display it
    }
};

这与用于任何类型的按钮按压的方法相同。 StackOverflow上还有很多其他答案,还有其他例子。如果您需要有关点击识别或显示片段的更多信息,快速搜索将在Stack上找到它。

答案 1 :(得分:0)

buttonView.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            DialogFragment frag = new ButtonNameDialogFragment();
            frag.show(*context*, ButtonNameDialogFragment.class.getCanonicalName());
        }
    });