首页 > 解决方案 > 当我这样做时,AppCompatDialogFragment 侦听器没有传递值

问题描述

'listener2.applyTexts2(infor);' 行 给我一个错误,我在 applyTexts2 上传递了一个空对象引用。我调试了这一行,'infor' 将所有值正常传递给它,但它仍然说它为空。我做错了什么?

(我从我的 MainActivity 中通过一个按钮调用它,插入信息的弹出窗口很好,一切看起来都很好,但是当我在数据中没有 null 时它说 null。我的 MainActivity 中有另一个侦听器,它工作正常.第一个会不会弄乱第二个?它们是完全独立的类)

public class StaffDialog extends AppCompatDialogFragment{

    private StaffDialogListener listener2;
    private EditText FirstName;
    private EditText LastName;
    private EditText Phone;
    private EditText Linkedin;
    private EditText Tran;
    private String[] infor = new String[5];

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

        LayoutInflater inflater = getActivity().getLayoutInflater();
        View view = inflater.inflate(R.layout.layout_dialog2,null);

        builder.setView(view)
                .setTitle("Enter this person's information")
                .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                })
                .setPositiveButton("Done", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        infor[0]=FirstName.getText().toString();
                        infor[1]=LastName.getText().toString();
                        infor[2]=Phone.getText().toString();
                        infor[3]=Linkedin.getText().toString();
                        infor[4]=Tran.getText().toString();
                        listener2.applyTexts2(infor);
                    }
                });

        FirstName = view.findViewById(R.id.name);
        LastName = view.findViewById(R.id.lastname);
        Phone = view.findViewById(R.id.phone);
        Linkedin = view.findViewById(R.id.linkedin);
        Tran = view.findViewById(R.id.tran);
        return builder.create();
    }

    @Override
    public void onAttach(Context context){
        super.onAttach(context);

        try{
            listener2 = (StaffDialogListener) context;
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public interface StaffDialogListener{
        void applyTexts2(String[] info);
    }
}```

标签: javaandroidnulllistenerappcompatdialogfragment

解决方案


推荐阅读