2017-01-25 3 views
-2

Ich versuche, einen Benutzernamen und ein Passwort aus Sicherheitsgründen zu machen, um meine App zu betreten. Ich habe versucht, den Benutzernamen und das Passwort als Objekte zu setzen, aber es gibt mir den obigen Fehler.EditText (android.content.Context) in EditText kann nicht angewendet werden (android.view.View)

Irgendwelche Hinweise?

I Android Studio es bin mit

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); 
     } 

    } 
} 
+0

Initialisieren Sie 'Ansichten' innerhalb oncreate und halten Sie eine globale Referenz in Klasse –

+1

' EditText password = neuer EditText (findViewById (R.id.passEditText)) 'Wie bist du darauf gekommen? wo hast du das gefunden? – njzk2

Antwort

2

1.) erstellen Referenzen innerhalb der Klasse zu verwenden später in enterUPButton Funktion

public class LogIn extends AppCompatActivity { 

    EditText username,password ; 

2.) Initialisieren Blick ins Innere 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); 
} 

Aktualisierung:

new EditText bedeuten ein neues Objekt der EditText Klasse zu schaffen, sondern findViewById(R.id.userEditText) ein View Objekt zurück, so die Aussage new EditText(View) sein wird, aber das Problem ist, es kein Konstruktor in EditText Klasse ist, die so zwei Fragen hier View als Parameter verwenden,

  • findViewById sollte innerhalb oncreate
  • Es gibt keinen Konstruktor in EditText Klasse verwendet werden, die View Objekt als Parameter übernimmt

password = (EditText)findViewById(R.id.passEditText); bedeuten wir holen die Referenz EditText Objekt-Tag von XML.

+0

Danke! Ich habe das gemacht und es gibt mir keinen Fehler mehr, aber es funktioniert jetzt nicht. Wenn ich die Verwendung eingeben und übergeben aufgelistet, und klicken Sie auf die Eingabetaste, passiert nichts –

+0

macht nichts! Es klappt! Danke. Kannst du mir genau erklären, was genau das Ändern von EditText zu (EditText) macht? –

+0

@backwardforward versuchen Sie die Update-Sektion und ich bin froh, dass ich helfen konnte, Happy Coding –

1

Das neue Schlüsselwort, das Sie verwendeten, erstellt ein neues Objekt vom Typ EditText. Wenn Sie den Code schreiben:

findViewById(R.id.passEditText) 

Es liefert die ID der EditText Blick aus dem XML. Da sie eine ID zurückgibt und Sie tatsächlich eine EditText-Variable in Ihrem Code haben möchten, müssen Sie sie in einen EditText-Typ umwandeln. So fügen wir (EditText) kurz vor dem findViewById Befehl, es zu werfen, etwa so:

(EditText) findViewById(R.id.passEditText) 

Als nächstes setzen Sie das auf Ihren Variable Passwort in Ihrem Java-Code genannt durch eine Art und Variablennamen wie folgt geben:

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

Hoffe, dass hilft.

Verwandte Themen