为了账号安全,请及时绑定邮箱和手机立即绑定

我不知道如何在我的自定义对话框中获取我的 EditText 的值

我不知道如何在我的自定义对话框中获取我的 EditText 的值

慕的地6264312 2022-06-15 15:54:00
我必须在 Android 上为一个学校项目做一个小应用程序,我想通过全屏对话框更新我的 listView,但我找不到一种方法来获取我的 EditText 字段中的值以将它们添加到我的 ArrayLists。这是我的 Dialog 类的代码:package com.example.memo;import android.annotation.SuppressLint;import android.os.Bundle;import android.support.annotation.NonNull;import android.support.annotation.Nullable;import android.support.v4.app.DialogFragment;import android.view.LayoutInflater;import android.view.View;import android.widget.EditText;import android.view.ViewGroup;import android.widget.ImageButton;import android.widget.TextView;import java.util.ArrayList;@SuppressLint("ValidFragment")public class FullscreenDialog extends DialogFragment implements View.OnClickListener {    private EditText titleEdit;    private EditText infoEdit;    private EditText fullEdit;    private ArrayList<String> titleArray;    private ArrayList<String> infoArray;    private ArrayList<Integer> imageArray;    private ArrayList<String> fullArray;    private Callback callback;    public FullscreenDialog(ArrayList<String> titleArray, ArrayList<String> infoArray, ArrayList<String> fullArray, ArrayList<Integer> imageArray){        this.titleArray = titleArray;        this.infoArray = infoArray;        this.fullArray = fullArray;        this.imageArray = imageArray;    }    static FullscreenDialog newInstance(ArrayList<String> titleArray, ArrayList<String> infoArray, ArrayList<String> fullArray, ArrayList<Integer> imageArray) {        return new FullscreenDialog(titleArray,infoArray,fullArray,imageArray);    }    public void setCallback(Callback callback) {        this.callback = callback;    }    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setStyle(DialogFragment.STYLE_NORMAL, R.style.FullscreenDialogTheme);    }  } 我想我在使用 findViewById 或其他东西的方式上一定犯了一些错误,但 Android 对我来说有点新,我似乎无法找到错误的地方。titleArray、infoArray 和 fullArray 是存储我的数据的 ArrayList。imageArray 是我的图像 ID 的 ArrayList。
查看完整描述

2 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

您调用或使用未初始化的实例变量(即 fullEdit、titleEdit 等)。为了纠正这个在方法 onCreateView 中初始化它们,所以它应该看起来像这样


@Nullable

    @Override

    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.activity_fullscreen_dialog, container, false);

        ImageButton close = view.findViewById(R.id.fullscreen_dialog_close);

        TextView action = view.findViewById(R.id.fullscreen_dialog_action);


        titleEdit = view.findViewById(R.id.fullscreen_dialog_title);

        infoEdit = view.findViewById(R.id.fullscreen_dialog_info);

        fullEdit = view.findViewById(R.id.fullscreen_dialog_full);



        close.setOnClickListener(this);

        action.setOnClickListener(this);


        return view;

    }

用上面的类实例 EditText 变量被实例化并且可以用来获取文本的 onClick 方法


查看完整回答
反对 回复 2022-06-15
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

您在类中全局定义变量 titleEdit、infoEdit 和 full Edit ,但问题是您在 onCreateView 方法中再次在本地定义它们,并使用 findViewById 将它们分配给视图。所以你现在有两种变量:

  • 全球的(尚未链接)

  • 本地的(链接到视图)

当您尝试获取未链接到 View 的全局值时,您访问的 editText 的值。

为了解决这个问题,删除本地的。你 onCreateView 应该是这样的:

@Nullable

    @Override

    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.activity_fullscreen_dialog, container, false);

        ImageButton close = view.findViewById(R.id.fullscreen_dialog_close);

        TextView action = view.findViewById(R.id.fullscreen_dialog_action);


        titleEdit = view.findViewById(R.id.fullscreen_dialog_title);

        infoEdit = view.findViewById(R.id.fullscreen_dialog_info);

        fullEdit = view.findViewById(R.id.fullscreen_dialog_full);



        close.setOnClickListener(this);

        action.setOnClickListener(this);


        return view;

    }


查看完整回答
反对 回复 2022-06-15
  • 2 回答
  • 0 关注
  • 150 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号