Мое приложение задерживается с ошибкой “android.support.v7.widget. AppCompatTextView cannot be cast to android.widget. EditText”

Выполнив мое приложение посредством симулянта, он задерживается автоматически, не заканчивая выполнять. Между всеми ошибками он помещает, что он проистекает из этого:

java.lang. ClassCastException: android.support.v7.widget. AppCompatTextView cannot be cast to android.widget. EditText

Присоединил код java обоих экран:

Main:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

private EditText texto;
private Button boton;

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

    //Tener acceso y referencia a los controles del programa

    texto = (EditText) findViewById(R.id.texto);
    boton = (Button) findViewById(R.id.boton);

    //comienza la funcion onClick

    boton.setOnClickListener(new View.OnClickListener(){

    @Override
    public void onClick(View v){

        // creamos el intent
        Intent intent=
                new Intent(MainActivity.this, SaludoActivity.class);

        //La comunicacione entre actividades

        Bundle b =new Bundle();
        //añadimos un dato de tipo String mediante el método putString(clave, valor)
        b.putString("NOMBRE", texto.getText().toString());

        //añadimos el intent

        intent.putExtras(b);

        //iniciamos actividad

        startActivity(intent);

    }
    } );
}
}

Второй экран:

package soto.javi.prueba1;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class SaludoActivity extends AppCompatActivity {

private TextView mostrar;

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

    mostrar= (TextView)findViewById(R.id.mostrar);

    //Recuperamos la información pasada en el intent

    Bundle bundle= this.getIntent().getExtras();

    //construimos el mensaje que se va a mostrar

    mostrar.setText("Hola" + bundle.getString("NOMBRE"));


}
}

И xml обоих:

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="soto.javi.prueba1.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/descripcion"
        android:textSize="24sp"
        android:id="@+id/texto" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:text=""
        android:ems="10"
        android:id="@+id/nombre"
        android:layout_marginTop="90dp"
        android:textSize="24sp"
        android:layout_below="@+id/texto"
        android:layout_centerHorizontal="true" />

    <Button
        android:text="@string/boton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/boton"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

activity_saludo.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_saludo"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="soto.javi.prueba1.SaludoActivity">

    <TextView
        android:text=""
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="194dp"
        android:id="@+id/mostrar"
        tools:textSize="24sp" />
</RelativeLayout>
3
задан 24.11.2016, 00:42
2 ответа

Действительно ты пробуешь его распределить в тебя EditText один пойдите, что он не существует. В твоем случае, ты был бы должен распределять ему id nombre:

texto = (EditText) findViewById(R.id.nombre);

Поскольку я вижу, что были непонимания, когда я помещаю один, пойдите, что он не существует, я имею в виду один пойдите, что он не существует для этого EditText.

Чтобы оставлять полностью полным мой ответ я буду ссылаться на, потому что он дает эту ошибку. В действительности, он, потому что ты использовал один, пойдите одного TextView после того, как пробовали, чтобы ссылаться в тебя EditText, с чем он отпускает тебя, ошибка как который не может делать вышеупомянутую ссылку.

Возможно приходить к заключению об этом ошибки (я нажал важное):

java.lang. ClassCastException: android.support.v7.widget. AppCompatTextView cannot be cast to android.widget. EditText

Когда он говорит о casteo (cast), он относится к тому, что стоимость, которая определена типом, может быть использованной как другой. Однако, мы должны быть уверены, которого стоимость, которая casteamos совместима с типом элемента, в который мы хотим castear. В противоположном случае, cast будет ошибочным и даст нам ошибку, очень сходную с предыдущим (в зависимости от типов данных, которых мы будем пробовать castear).

А именно, когда ты используешь findViewById(R.id.texto); действительно то, что ты делаешь, состоит в том, чтобы искать вид с этой идентификацией. Верни этот вид (которого один TextView) и он пробует ее конвертировать в EditText, следовательно, вид, который мы возвращаем, не соответствует с cast, который мы хотим распределить ему.

3
ответ дан 24.11.2019, 12:27
  • 1
    Я новый в разработке приложений. Он понимал, что, когда он использовал: texto = (EditText) findViewById(R.id.nombre) был должен помещать id, который распределил мой EditText, ¿ нет? –  J.Soto 23.11.2016, 14:02
  • 2
    @J.Soto Así это, в самом деле, id для тебя EditText ты это определяешь в этой lí nea: android:id="@+id/nombre". Следовательно Ваш пойдите его nombre. –  Francisco Romero 23.11.2016, 14:16
  • 3
    у тебя есть вся razó n, я ушли глаза в эту lí nea android:layout_below="@+id/texto", большое спасибо –  J.Soto 23.11.2016, 14:18
  • 4
    @J.Soto В случае, если ты хотел, чтобы у него был один, пойдите различно просто смени стоимость nombre на твою желанную стоимость. –  Francisco Romero 23.11.2016, 14:18
  • 5
    Я не верю в это. Segú n консоль ошибка, - из-за которого ты View - типа AppCompatTextView, но когда casteas ты это делаешь используя другой тип View EditText –  marlonpya 23.11.2016, 17:39
Реальная проблема, основанная на твоей ошибке в действительности - неправильные пробы , не один пойдите, что он не существует:

java.lang. ClassCastException: android.support.v7.widget. AppCompatTextView cannot be cast to android.widget. EditText

, Который производится после того, как не сможет реализовывать ее conversiГіn с типа TextView до EditText.

вызван, потому что ты стараешься реализовывать cast типа EditText в один Widget с id texto:

texto = (EditText) findViewById(R.id.texto);

И этого элемента в действительности один TextView:

<TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/descripcion"
       android:textSize="24sp"
       android:id="@+id/texto" />

Например layout activity_main.xml, которые ты загружаешь посредством:

setContentView(R.layout.activity_main);

ты содержишь 3 элемента, которые:

<TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/descripcion"
       android:textSize="24sp"
       android:id="@+id/texto" />

   <EditText
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:inputType="text"
       android:text=""
       android:ems="10"
       android:id="@+id/nombre"
       android:layout_marginTop="90dp"
       android:textSize="24sp"
       android:layout_below="@+id/texto"
       android:layout_centerHorizontal="true" />

   <Button
       android:text="@string/boton"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:id="@+id/boton"
       android:layout_centerVertical="true"
       android:layout_centerHorizontal="true" />

, Чтобы получать ссылки, ты должен реализовывать casting правильно согласно Вашему типу:

private TextView texto;
private EditText nombre;
private Button boton;

...
...
...

texto = (TextView)findViewById(R.id.texto);
nombre = (EditText)findViewById(R.id.nombre);
boton = (Boton)findViewById(R.id.boton);
4
ответ дан 24.11.2019, 12:27
  • 1
    Я думаю, что было немного непонимания. Однако, уже я поместил комментарий, чтобы это осветлять. В действительности то, что он querí когда OP объясняет в, дело в том, что не habí в один пойдите на этот EditText. Взамен ты объясняешь ему причину ошибки, я был má s прямой. Спасибо за завершение того, что я не сказал! Хороший ответ ^^ –  Francisco Romero 23.11.2016, 17:40
  • 2
    @J.Soto и Error404, нет неправильно понятого, дело в том, что в действительности элементы с этими пойдите, они существуют, проблема: AppCompatTextView cannot be cast to android.widget. EditText –  Jorgesys♦ 23.11.2016, 17:46
  • 3
    Ошибка показывает истинную проблему, Hey заканчиваются у меня давания другого обета " fantasma" который я комментирую в этом post. meta.es.stackoverflow.com/questions/604/… hahaha (гЃҐв —” НњК–в —”) гЃҐ –  Jorgesys♦ 23.11.2016, 17:48
  • 4
    Sí в mí также меня не пометили все отрицательные точки. И sí поэтому, которого tení в два ids созданные я limité просто давать ему solució n в проблему. Равный моя неудача состояла в том, чтобы не помещать причину ошибки, так как я получил много негативов. ¿ Deberí она, чтобы вновь издавать @Elenasys показывая весь процесс? Хотя действительно veí в ненужный для чего-то так bá sico, поскольку менять один пойдите. –  Francisco Romero 23.11.2016, 17:51
  • 5
    @Error404 и Elenasys не кто проголосовал за вас в негативе, но в меня я habé is бывший большой помощи, если он подает вас чего-то. Я пробую начинаться из-за моего счета в programació n в android и я иду немного потеряно, но каждый раз, когда я спрашиваю немного aquí вы большой помощи. Большое спасибо. –  J.Soto 28.11.2016, 12:18