Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我想在片段窗口上显示一个对话框。如果单击文本视图,则必须出现一个对话框。但我犯了个错误_Android - Fatal编程技术网

Android 我想在片段窗口上显示一个对话框。如果单击文本视图,则必须出现一个对话框。但我犯了个错误

Android 我想在片段窗口上显示一个对话框。如果单击文本视图,则必须出现一个对话框。但我犯了个错误,android,Android,如果单击了TextView,我想显示对话框。放置在片段上的文本视图称为注意。我通过向人们寻求帮助来编写代码。但是我犯了一个错误。在这两行上 AlertDialog.Builder alert = new AlertDialog.Builder(this); final EditText input = new EditText(this); 错误说明: 无法将in-EditText应用于(匿名android.view.view.OnClickListener)

如果单击了TextView,我想显示对话框。放置在片段上的文本视图称为注意。我通过向人们寻求帮助来编写代码。但是我犯了一个错误。在这两行上

        AlertDialog.Builder alert = new AlertDialog.Builder(this);
        final EditText input = new EditText(this);
错误说明:

无法将in-EditText应用于(匿名android.view.view.OnClickListener)

我的完整代码如下:

    package com.example.demo;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.InputType;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;

public class Attention extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.activity_attention, container, false);
    }
    private String Anhaaramj_ogoh_ortoo;
    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        TextView ortooheadTextView = getActivity().findViewById(R.id.ortoohead);
        ortooheadTextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                AlertDialog.Builder alert = new AlertDialog.Builder(this);
                final EditText input = new EditText(this);
                input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE);
                alert.setTitle("Анхаарамж өгөх өртөө")
                        .setView(input)
                        .setPositiveButton("Хадгалах", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Anhaaramj_ogoh_ortoo = input.getText().toString();
                            }
                        });
                alert.setNegativeButton("Цуцлах", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                });

                alert.show();
            }
        });
    }

}

您的
指的是
视图。OnClickListener
。您需要将上下文传递给
AlertDialog.Builder
EditText

AlertDialog.Builder alert = new AlertDialog.Builder(requireContext());
final EditText input = new EditText(requireContext());

final EditText input=新的EditText(此)
这里的“this”是OnClickListener,但对于edittext,您需要上下文,活动是上下文,chanage将这些行转换为:

AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
final EditText input = new EditText(getActivity());

EditText应该使用上下文作为构造函数参数实例化,而不是OnClickListener。您可以将上下文存储在临时变量之前,或者最好直接从片段对象获取它。您可以通过调用:
requireContext()
来完成此操作。但要小心,这可能会产生异常

因此,对代码的更正如下:

//可能也会处理可能的异常!
上下文=requireContext();
AlertDialog.Builder alert=新建AlertDialog.Builder(上下文);
最终编辑文本输入=新编辑文本(上下文);

您正在实例化
AlertDialog.Builder
EditText
内部
onClick(视图)
。所以通过
这个
你指的是
OnClickListener
。按如下方式传递
getActivity()

AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
final EditText input = new EditText(getActivity());

newedittext(this)
EditText
的构造函数需要一个
上下文
,不仅仅是任何
这个
,但是我得到一个错误
没有任何意义。请在问题中添加您的日志。请避免使用(1)俚语,如“想”,当“想”是更可读的选项时,(2)“请帮助”乞讨,以及所有类似的变体。堆栈溢出旨在成为未来读者的可读资源,它不是讨论论坛,也不是聊天室。非常感谢。