web-dev-qa-db-fra.com

erreur Android sur le tutoriel ne peut pas trouver la variable de symbole activity_display_message

J'essaie d'apprendre le développement d'applications Android à l'aide de didacticiels et d'Android Studio. Certains des commentaires concernant XML et les importations ont été utiles. Je suis à une erreur. J'ai cette erreur Erreur: (22, 57) erreur: impossible de trouver la variable de symbole activity_display_message

Les erreurs concernant les importations que j'ai corrigées avec quelques recherches sur le flux de pile. Il me manque quelque chose

DisplayMessageActivity

package com.example.rpinto.myfirstapp;

import Android.content.Intent;
import Android.support.v7.app.AppCompatActivity;
import Android.os.Bundle;
import Android.view.ViewGroup;
import Android.widget.TextView;

public class DisplayMessageActivity extends AppCompatActivity {

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

        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
        TextView textView = new TextView(this);
        textView.setTextSize(40);
        textView.setText(message);

        ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message);
        layout.addView(textView);
    }
}

activity_display_message.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: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="com.example.rpinto.myfirstapp.DisplayMessageActivity"
    tools:showIn="@layout/activity_display_message"
    Android:id="@+id/content">
</RelativeLayout>

build.gradle

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 23
    buildToolsVersion "24.0.1"

    defaultConfig {
        applicationId "com.example.rpinto.myfirstapp"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.Android.support:appcompat-v7:23.4.0'
}
5
ryan.pinto

Je ne sais pas si quelqu'un a encore besoin de la réponse à cela, mais je l'ai compris comme ça:

J'ai vu cela dans le tutoriel:

Remarque: la disposition XML générée par les versions précédentes d'Android Studio peut ne pas inclure l'attribut Android: id. L'appel findViewById () échouera si la présentation n'a pas l'attribut Android: id. Si tel est le cas, ouvrez activity_display_message.xml et ajoutez l'attribut Android: id = "@ + id/activity_display_message" à l'élément layout.

Donc, sous Res -> layout -> activity_display_message.xml, j'ai entré la ligne

Android:id="@+id/activity_display_message"

N'importe où dans les balises RelativeLayout. Dans mon cas en particulier, je l'ai aléatoire au hasard entre Android: paddingTop et outils: champs de contexte

J'espère que cela aide: D

4
AlgoRythm

J'ai eu le même problème. Sous la section "Construire une intention" dans les instructions d'Android Studio, il est facile de rater cette ligne:

public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";

Assurez-vous que cela est inclus au-dessus de @Override dans MainActivity.Java et que tout est prêt :)

3
Joey

Je pense:

ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message);

Devrait être:

RelativeLayout layout = (RelativeLayout ) findViewById(R.id.content);
2
VirginsTv

Voici la solution mise à jour pour cela. 

L'intention est une sous-classe de l'activité principale, il n'est donc pas nécessaire de spécifier explicitement. Cela signifie que nous pouvons appeler EXTRA_MESSAGE au lieu de MainActivity.

EXTRA_MESSAGE

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_message);

    Intent intent = getIntent();
    String message = intent.getStringExtra(EXTRA_MESSAGE);
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);

    ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message);
    layout.addView(textView);
1
Vinay Kumar P

L'erreur provient du fichier MainActivity.Java.

TextView tv = (TextView) findViewById(R.id.editText);

Où j'ai (R.id.editText); ..... le système mis (R.id.edit_message);

edit_message est la fonction ajoutée à la zone de texte mais elle se trouve sous le "bloc" (EditText) du code. Nouveau en Java, je ne sais pas comment s'appelle le bloc de code ni pourquoi le programme l'a placé dans la classe publique. J'espère que cela t'aides. 

package com.example.josh.myfirstapplication;

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

public class MainActivity extends AppCompatActivity {

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

    // Example of a call to a native method
    TextView tv = (TextView) findViewById(R.id.editText);
    tv.setText(stringFromJNI());
    }

    /**
     * A native method that is implemented by the 'native-lib' native library,
     * which is packaged with this application.
     */
    public native String stringFromJNI();

    // Used to load the 'native-lib' library on application startup.
    static {
        System.loadLibrary("native-lib");
    }
}
0
Josh

J'ai résolu le même problème par projet propre, puis Build the gradle, veuillez essayer une fois.

0
Divakar Joshi

J'ai eu le même message d'erreur: impossible de trouver la variable de symbole activity_display_message

Je l'ai résolu en ajoutant Android: id in activity_display_message.xml

<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.ConstraintLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    tools:context="com.example.galo.myapplication.DisplayMessageActivity"
    Android:id="@+id/activity_display_message">

</Android.support.constraint.ConstraintLayout>
0

J'ai eu ce problème tellement de fois en essayant de faire ce tutoriel, et d'ajouter à la seule réponse qui m'a aidé, qui était de supprimer le MainActivity. de la partie MainActivity.EXTRA_MESSAGE ...

J'ai également dû importer les éléments suivants dans DisplayMessageActivity.Java:

import static Android.provider.AlarmClock.EXTRA_MESSAGE;

Cela a complètement résolu toutes mes erreurs et m'a permis de continuer le tutoriel.

0
akinoreiki

Vérifiez si vous avez un code comme celui-ci dans MainActivity.Java:

public class MainActivity extends AppCompatActivity {

    public static final String EXTRA_MESSAGE = "com.example.MyApplicationstart.MESSAGE";

"com.example.MyApplicationstart.MESSAGE", où "MyApplicationstart" est le nom de votre projet.

0
Ira Zakharchenko
"@layout/activity_display_message"

C'est une mise en page. Pas une identité. 

Vous l'avez correctement utilisé ici en tant que R.layout

setContentView(R.layout.activity_display_message);

Mais c'est faux comme R.id

ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message);
layout.addView(textView);

La méthode corrigée devrait idéalement ressembler à ceci, mais notez que vous voudrez peut-être des LayoutParams sur le TextView, sinon elle pourrait ne pas s'afficher à l'écran.

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

    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);

    ViewGroup layout = (ViewGroup) findViewById(R.id.content);
    layout.addView(textView);
}
0
cricket_007