EditText中的EditText(android.content.Context)无法应用于(android.view.View)

时间:2017-01-25 18:00:45

标签: 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.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);
        }

    }
}

2 个答案:

答案 0 :(得分:2)

1。)在类中创建引用,以便稍后在'customHeader':'token'函数

中使用它
enterUPButton

2。)初始化public class LogIn extends AppCompatActivity { EditText username,password ;

中的视图
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); } 表示创建new EditText类的新对象,但EditText将返回findViewById(R.id.userEditText)对象,因此语句将为View,但问题在那里在EditText类中没有使用new EditText(View)作为参数的构造函数,所以这里有两个问题,

  • findViewById应在View
  • 中使用
  • oncreate类中没有构造函数将EditText对象作为参数

View表示我们从password = (EditText)findViewById(R.id.passEditText);获取EditText对象标记的引用。

答案 1 :(得分:1)

您使用的新关键字会创建一个EditText类型的新对象。 当你编写代码时:

findViewById(R.id.passEditText)

它从XML返回EditText视图的id。由于它返回一个id并且您实际上想在代码中使用EditText变量,因此必须将其转换为EditText类型。所以我们在findViewById命令之前添加(EditText)来强制转换它,如下所示:

(EditText) findViewById(R.id.passEditText)

接下来,通过提供类似的变量名称,将其设置为java代码中名为password的变量:

EditText password = (EditText) findViewById(R.id.passEditText);

希望有所帮助。