我很容易发现错误。我没有发现任何错误,但是我没有从editText中获取任何文本。请看下面的代码:
activity_pwd.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout_root" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="10dp" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Enter PIN " android:textAppearance="?android:attr/textAppearanceLarge" /> <EditText android:id="@+id/pwdValue" android:layout_width="match_parent" android:maxLength="4" android:maxLines="1" android:inputType="numberPassword" android:layout_height="wrap_content"> </EditText> </LinearLayout>
我立即打电话给 Lock(this);* on MainActivity的 onCreate 方法 *
public void LockImmediately(Context context) { if (lock_app) { View myview = LayoutInflater.from(context).inflate(R.layout.activity_pwd,null); enterPWD = (EditText) myview.findViewById(R.id.pwdValue); AlertDialog alertDialog = new AlertDialog.Builder(this).setCancelable(false) .setView(R.layout.activity_pwd).setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String user_text = enterPWD.getText().toString(); Log.d("onCreate pws", " i "+user_text); if (pwd.equals(user_text)) { dialog.dismiss(); Log.d("onCreate", "Work done"); } else { dialog.dismiss(); MainActivity.this.finish(); } } }).create(); alertDialog.show(); } }
对数
02-15 23:15:30.840 29379-29379/com.developersqueen.wishlater D/onCreate: onCreate 02-15 23:15:37.021 29379-29379/com.developersqueen.wishlater D/onCreate pws: i 02-15 23:15:45.427 29379-29379/com.developersqueen.wishlater D/onCreate: onCreate 02-15 23:15:49.026 29379-29379/com.developersqueen.wishlater D/onCreate pws: i
您可以看到上面的日志,我已将edittext值与“ i”连接起来,但未返回任何值。.我尝试清除数据,卸载应用程序,清理,构建所有内容,但始终得到相同的结果!任何帮助,将不胜感激..
将视图设置为AlertDialog时,应设置视图,在该视图中找到EditText的ID。
您已经使用 myview 查找了EditText的ID,但是您试图从Activity中而不是从Dialog中获取myView。
如果将视图设置为 myview ,则可以从 enterPWD EditText 获得文本。
AlertDialog alertDialog = new AlertDialog.Builder(this).setCancelable(false) .setView(myview).setPositiveButton("OK", new DialogInterface.OnClickListener() { ... }
您应该为“活动”和“对话框”本身创建单独的布局。不要同时使用两种布局。