Java EditText中的EditText(android.content.Context)无法应用于(android.view.view)
为了安全起见,我正在尝试输入我的应用程序的用户名和密码。我尝试将用户名和密码设置为对象,但它给出了上述错误 有什么线索吗 我正在使用android studioJava EditText中的EditText(android.content.Context)无法应用于(android.view.view),java,android,android-studio,Java,Android,Android Studio,为了安全起见,我正在尝试输入我的应用程序的用户名和密码。我尝试将用户名和密码设置为对象,但它给出了上述错误 有什么线索吗 我正在使用android studio package com.example.xfrehner1.jacksonattendance; import android.content.Intent; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivi
package com.example.xfrehner1.jacksonattendance;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
public class LogIn extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_log_in);
}
/*Creates objects for the username and password*/
EditText username = new EditText(findViewById(R.id.userEditText));//it highlights this red
EditText password = new EditText(findViewById(R.id.passEditText));//this too
//AlertDialog wrongUP = new AlertDialog.Builder(LogIn.this).create();
//wrongUP.setTitle("Error");
public void enterUPButton(View v){
Intent afterLog= new Intent(this, firstScreen.class);
if(username.getText().toString().equals("admin") && password.getText().toString().equals("Password1234")){
startActivity(afterLog);
}else{
System.exit(0);
}
}
}
1.)在类内创建引用,以便稍后在enterUPButton
函数中使用
public class LogIn extends AppCompatActivity {
EditText username,password ;
2.)初始化视图内部onCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_log_in);
username = (EditText)findViewById(R.id.userEditText);
password = (EditText)findViewById(R.id.passEditText);
}
更新:
newedittext
意味着创建一个EditText
类的新对象,但是findViewById(R.id.userEditText)
将返回一个视图
对象,因此语句将是newedittext(View)
,但问题是类中没有使用视图
作为参数的构造函数,所以这里有两个问题
- 应在
oncreate中使用
类中没有将EditText
对象作为参数的构造函数View
password=(EditText)findViewById(R.id.passEditText)
表示我们正在从XML
获取EditText
对象标记的引用。您使用的新关键字将创建EditText类型的新对象。
编写代码时:
findViewById(R.id.passEditText)
它从XML返回EditText视图的id。由于它返回一个id,并且您实际上希望代码中有一个EditText变量,因此必须将其强制转换为EditText类型。因此,我们在findviewbyd命令之前添加(EditText)来强制转换它,如下所示:
(EditText) findViewById(R.id.passEditText)
接下来,在java代码中为名为password的变量设置密码,方法是提供如下类型和变量名:
EditText password = (EditText) findViewById(R.id.passEditText);
希望有帮助。在类中持有全局引用时初始化您的
视图
内部oncreateEditText password=new EditText(findViewById(R.id.passEditText))
您是怎么想到这个的?你在哪里找到的?谢谢!我这样做了,它不再给我一个错误,但它现在不工作。当我输入列出的使用和通行证,并单击“输入”按钮时,没有发生任何事情—不要紧!它起作用了!非常感谢。你能给我解释一下把新的EditText改成(EditText)到底有什么作用吗?@backwardforward试试更新部分,我很高兴我能帮上忙,很高兴编码