Android 我想在片段窗口上显示一个对话框。如果单击文本视图,则必须出现一个对话框。但我犯了个错误
如果单击了TextView,我想显示对话框。放置在片段上的文本视图称为注意。我通过向人们寻求帮助来编写代码。但是我犯了一个错误。在这两行上Android 我想在片段窗口上显示一个对话框。如果单击文本视图,则必须出现一个对话框。但我犯了个错误,android,Android,如果单击了TextView,我想显示对话框。放置在片段上的文本视图称为注意。我通过向人们寻求帮助来编写代码。但是我犯了一个错误。在这两行上 AlertDialog.Builder alert = new AlertDialog.Builder(this); final EditText input = new EditText(this); 错误说明: 无法将in-EditText应用于(匿名android.view.view.OnClickListener)
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)“请帮助”乞讨,以及所有类似的变体。堆栈溢出旨在成为未来读者的可读资源,它不是讨论论坛,也不是聊天室。非常感谢。