【问题标题】:Why setText() of EditText is not working?为什么 EditText 的 setText() 不起作用?
【发布时间】:2013-12-07 02:28:03
【问题描述】:

我想在 AlertDialog 中的 EditText 中放入一个字符串,它位于带有 ListVIew 的 onItemClick 侦听器中。这是代码的一部分

dialogbuilder= new AlertDialog.Builder(this)

          .setTitle(R.string.title_connect_dialog)

          .setView(getLayoutInflater().inflate(R.layout.dialog_connect,null))

          .setPositiveButton("Connect", new DialogInterface.OnClickListener() {

              @Override

              public void onClick(DialogInterface dialog, int which) {
              }

          })

          .setNegativeButton("Cancel",new DialogInterface.OnClickListener() {

              @Override

              public void onClick(DialogInterface dialog, int which) {
              }

          })

          .create();



  LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

  final View view = inflater.inflate(R.layout.dialog_connect, null);

 edit1 = (EditText)view.findViewById(R.id.devicename);

   edit2 = (EditText)view.findViewById(R.id.deviceadd);



private AdapterView.OnItemClickListener mDeviceClickListener = new AdapterView.OnItemClickListener() {



  public void onItemClick(AdapterView<?> adapterView, View v, int arg2, long arg3) {

        String info = ((TextView) v).getText().toString();

        name = info.substring(0,info.length() - 18);

        address = info.substring(info.length() - 17);

        dialogbuilder.show();

            edit1.setText(name);

            edit2.setText(address);

       }

};

当我运行项目时,EditText 中没有任何内容!它不起作用!但没有异常或错误。我尝试只在 XML 文件中设置文本可以工作。我将 EditText 替换为 TextView ,但不是也工作。 逻辑有问题吗?感谢阅读。

【问题讨论】:

  • nameaddress 定义在哪里?
  • 删除 dialogbuilder.show();从 eddit1.setText(name) 的上方并将其放在 eddit2.setText(address) 之后
  • 在onItemClickListner中。

标签: android android-edittext settext


【解决方案1】:

用作视图实例,用于访问您在setViewAlertDialog.Builder 更改的setView 方法中传递的对话框布局:

  .setView(getLayoutInflater().inflate(R.layout.dialog_connect,null))

  .setView(view)

编辑:

或者你应该使用dialogbuilder实例来初始化EditText,而不是再次膨胀布局来访问视图:

edit1 = (EditText)dialogbuilder.findViewById(R.id.devicename);
edit2 = (EditText)dialogbuilder.findViewById(R.id.deviceadd);

【讨论】:

    【解决方案2】:

    您在设置文本之前显示Dialog

    dialogbuilder.show();
    
    edit1.setText(name);
    edit2.setText(address);
    

    尝试改变它

    edit1.setText(name);
    edit2.setText(address);
    dialogbuilder.show();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2014-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多