3

如何在此 DialogFragment 中检索 editText1?它存在于 vraag_banen.xml 但 getView() 为空。

该对话框显示正常,也没有编译错误,但是我无法弄清楚如何使用 xml 资源文件中的自定义视图为 PositiveButton 编写事件处理程序。

package mypackage;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;

public class VraagBanenDialogFragment extends DialogFragment {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        // Get the layout inflater
        LayoutInflater inflater = getActivity().getLayoutInflater();

        // Inflate and set the layout for the dialog
        // Pass null as the parent view because its going in the dialog layout
        builder.setView(inflater.inflate(R.layout.vraag_banen, null))
        // Add action buttons
               .setPositiveButton(R.string.dialog_ok, new DialogInterface.OnClickListener() {
                   @Override
                   public void onClick(DialogInterface dialog, int id) {

                       Activity pa = getActivity().getParent(); //-> TabsMenu
                       Context bc = getActivity().getBaseContext(); //-> ContextImpl
                       View vi = getView(); //-> null
                       Class<? extends OnClickListener> cl = this.getClass(); //-> Class (nl.computerhuys.tabnavui.VraagBanenDialogFragment$1)
                       String acn = getActivity().getClass().getName(); //-> nl.computerhuys.tabnavui.Spel
                       String cn = getClass().getName(); //-> nl.computerhuys.tabnavui.VraagBanenDialogFragment$1
                       OnClickListener t = this; //-> VraagBanenDialogFragment$1

                       EditText editText1 = (EditText) getView().findViewById(R.id.editText1); 
                       EditText editText2 = (EditText) getView().findViewById(R.id.editText2);
                       int baan1 = Integer.valueOf(editText1.getText().toString());
                       int baan2 = Integer.valueOf(editText2.getText().toString());
                       InitSpel.addBaanNummer(baan1);
                       InitSpel.addBaanNummer(baan2);

                   }
               })
               .setNegativeButton(R.string.dialog_cancel, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       VraagBanenDialogFragment.this.getDialog().cancel();
                   }
               });      
        return builder.create();
    }
4

1 回答 1

11

找到了一种方法:命名匿名视图:

View v = inflater.inflate(R.layout.vraag_banen, null) 

然后使用 v 来引用视图,而不是 getView():

EditText editText1 = (EditText) v.findViewById(R.id.editText1).

等等。这行得通。

于 2013-01-25T13:54:12.157 回答