0

カスタムアラートダイアログがあります。カスタムダイアログのテキストビューをクリックすると、これが閉じられ、別のカスタムダイアログが開きます。しかし、このカスタムダイアログは閉じません。

Alert.Builder alertViewTaskDescription = new AlertDialog.Builder(
        getActivity());
LayoutInflater inflaterViewTaskDescription = (LayoutInflater) getActivity()
        .getSystemService(getActivity().LAYOUT_INFLATER_SERVICE);
viewTaskWithDescription = (View) inflaterViewTaskDescription
        .inflate(R.layout.viewtaskwithdescriptionlayout, null,
                false);

TextView textviewTask = (TextView) viewTaskWithDescription
        .findViewById(R.id.taskidDaytoDayView);
TextView textviewDescription = (TextView) viewTaskWithDescription
        .findViewById(R.id.descriptionidDaytoDayView);
textviewTask.setText(taskName);

textviewDescription.setText("ADD DESCRIPTION");
alertViewTaskDescription.setView(viewTaskWithDescription);
alertDialog = alertViewTaskDescription.create();
textviewDescription.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        alertDialog.cancel();
        AlertDialog.Builder alertEditTaskDescription = new AlertDialog.Builder(getActivity());

        LayoutInflater inflaterEditTaskDescription = (LayoutInflater) getActivity()
                .getSystemService(
                        getActivity().LAYOUT_INFLATER_SERVICE);

        View viewEditTaskDescription = (View) inflaterEditTaskDescription
                .inflate(R.layout.edittaskwithdescriptionlayout,
                        null, false);
        final EditText edittextTask = (EditText) viewEditTaskDescription
                .findViewById(R.id.taskidDaytoDayEdit);
        final EditText edittextDescription = (EditText) viewEditTaskDescription
                .findViewById(R.id.descriptionidDaytoDayEdit);
        edittextTask.setText(taskName);
        edittextDescription.setText(taskDescription);
        edittextTask.setSelection(edittextTask.getText()
                .length());
        edittextDescription
                .setSelection(edittextDescription.getText()
                        .length());
        alertEditTaskDescription
                .setView(viewEditTaskDescription);
        alertEditTaskDescription.setPositiveButton("OK",
            new DialogInterface.OnClickListener() {

                @Override
                public void onClick(
                        DialogInterface dialog,
                        int which) {
                }
            });

        alertViewTaskDescription.create().show();
    }});
4

1 に答える 1

1

次のコードを確認しました。

public class MyActivity extends Activity {

    private AlertDialog mDialog;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        AlertDialog.Builder alertViewTaskDescription = new AlertDialog.Builder(this);
        LayoutInflater inflaterViewTaskDescription = (LayoutInflater) this
                .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        final ViewGroup viewTaskWithDescription = (ViewGroup) inflaterViewTaskDescription
                .inflate(R.layout.viewtaskwithdescriptionlayout, null, false);

        TextView textviewTask = (TextView) viewTaskWithDescription
                .findViewById(R.id.taskidDaytoDayView);
        TextView textviewDescription = (TextView) viewTaskWithDescription
                .findViewById(R.id.descriptionidDaytoDayView);
        textviewTask.setText("Task Name");

        textviewDescription.setText("ADD DESCRIPTION");
        alertViewTaskDescription.setView(viewTaskWithDescription);

        textviewDescription.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                getDialog().cancel();
                createSecondDialog();
            }});

        mDialog = alertViewTaskDescription.create();
        mDialog.show();
    }


    public AlertDialog getDialog() {
        return mDialog;
    }

    private void createSecondDialog() {
        AlertDialog.Builder alertEditTaskDescription = new AlertDialog.Builder(MyActivity.this);

        LayoutInflater inflaterEditTaskDescription = (LayoutInflater) MyActivity.this
                .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

        View viewEditTaskDescription = (View) inflaterEditTaskDescription
                .inflate(R.layout.edittaskwithdescriptionlayout,
                        null, false);
        final EditText edittextTask = (EditText) viewEditTaskDescription
                .findViewById(R.id.taskidDaytoDayEdit);
        final EditText edittextDescription = (EditText) viewEditTaskDescription
                .findViewById(R.id.descriptionidDaytoDayEdit);
        edittextTask.setText("Task name 1");
        edittextDescription.setText("Task description!");
        edittextTask.setSelection(edittextTask.getText()
                .length());
        edittextDescription
                .setSelection(edittextDescription.getText()
                        .length());
        alertEditTaskDescription
                .setView(viewEditTaskDescription);
        alertEditTaskDescription.setPositiveButton("OK",
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(
                            DialogInterface dialog,
                            int which) {
                    }
                });

        mDialog = alertEditTaskDescription.create();

        mDialog.show();
    }
}

そして、それはうまくいきました。アクティビティにダイアログを保存することで問題が解決したと思います。onClick(View v)You're calling wrong dialog to show in -> alertViewTaskDescription.create().show();(代わりに) のように見えるので、ネーミングも確認してくださいalertEditTaskDescription.create().show()

于 2013-07-02T11:21:35.513 に答える