Unknown class when using TextInputLayout in MainActivity

0

use Android Studio 3 , I'm trying to do validation, in the first part according to a tutorial that I saw, this is done:

package com.example.jhon.cesde5;

import android.content.Intent;
import android.sax.StartElementListener;
import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.util.Patterns;
import android.widget.TextView;
import java.util.regex.Pattern;

public class MainActivity extends AppCompatActivity {
    TextInputLayout impEditDescripcion, impEditDocIdent, impEditPassword, impTextNombre, impTextApellido, impTextDireccion;
    TextInputLayout impTextTelefono, impTextFechaIngreso, impTextEstado;
    EditText editTextDescripcion, editTexDocIdent, editPassword, textNombre, textApellido, textDireccion, textTelefono,
    texEstado, textFechaIngreso;
    Button butIngresar, butIngresarCliente;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    impEditDescripcion=(TextInputLayout)findViewById(R.id.impEditDescripcion);

I get this error in the last line:

  

Unknown class impEditDescription

    
asked by Jhon Hernández 17.09.2018 в 09:23
source

3 answers

0

I think the error is because you are trying to declare the variable in a site that does not correspond to it. To declare the elements of the layout you have to load the view in the on create method and then declare the elements such that:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        impEditDescripcion=(TextInputLayout)findViewById(R.id.impEditDescripcion);
    }
    
answered by 17.09.2018 в 09:31
0

The problem is that you are trying to get the TextInputLayout reference outside the onCreate() method which is incorrect:

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    impEditDescripcion=(TextInputLayout)findViewById(R.id.impEditDescripcion);

The onCreate() method indicates through the setContentView() method the layout of your Activity and that usually contains the elements that will be displayed in the UI.

Obtaining the reference of your TextInputLayout must be done within onCreate() in this way:

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        impEditDescripcion=(TextInputLayout)findViewById(R.id.impEditDescripcion);


    }
    
answered by 17.09.2018 в 18:44
-1

You must code within the onCreate otherwise create a method and make the call in the onCreate, like this:

package com.example.jhon.cesde5;

import android.content.Intent;
import android.sax.StartElementListener;
import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.util.Patterns;
import android.widget.TextView;
import java.util.regex.Pattern;

public class MainActivity extends AppCompatActivity {
    TextInputLayout impEditDescripcion, impEditDocIdent, impEditPassword, impTextNombre, impTextApellido, impTextDireccion;
    TextInputLayout impTextTelefono, impTextFechaIngreso, impTextEstado;
    EditText editTextDescripcion, editTexDocIdent, editPassword, textNombre, textApellido, textDireccion, textTelefono,
    texEstado, textFechaIngreso;
    Button butIngresar, butIngresarCliente;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        impEditDescripcion=(TextInputLayout)findViewById(R.id.impEditDescripcion);
    }

or you can use it like this:

package com.example.jhon.cesde5;

    import android.content.Intent;
    import android.sax.StartElementListener;
    import android.support.design.widget.TextInputLayout;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.util.Patterns;
    import android.widget.TextView;
    import java.util.regex.Pattern;

    public class MainActivity extends AppCompatActivity {
        TextInputLayout impEditDescripcion, impEditDocIdent, impEditPassword, impTextNombre, impTextApellido, impTextDireccion;
        TextInputLayout impTextTelefono, impTextFechaIngreso, impTextEstado;
        EditText editTextDescripcion, editTexDocIdent, editPassword, textNombre, textApellido, textDireccion, textTelefono,
        texEstado, textFechaIngreso;
        Button butIngresar, butIngresarCliente;


        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            initComponent();
        }

       public void initComponent(){
            impEditDescripcion=(TextInputLayout)findViewById(R.id.impEditDescripcion);
       }
    
answered by 17.09.2018 в 16:15