Ошибка андроида в учебнике не может найти символьную переменную activity_display_message

Я пытаюсь научиться созданию приложений Android через учебные пособия и Android Studio. Некоторые комментарии относительно xml и импорта были helpfult. Я дошел до одной ошибки. Я получаю эту ошибку Ошибка: (22, 57) ошибка: не удается найти символьную переменную activity_display_message

Ошибки в отношении импорта, которые я исправил с некоторыми поисками в потоке стека. Я чего-то не хватает

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' } 

Не знаю, нужен ли кому-нибудь еще ответ на этот вопрос, но я понял это так:

Я видел это в учебнике:

Примечание. Формат XML, сгенерированный предыдущими версиями Android Studio, может не включать атрибут android: id. Вызов findViewById () не будет выполнен, если в макете нет атрибута android: id. Если это так, откройте activity_display_message.xml и добавьте атрибут android: id = "@ + id / activity_display_message" в элемент макета.

Итак, в разделе Res -> layout -> activity_display_message.xml я ввел строку

 android:id="@+id/activity_display_message" 

Везде внутри тегов RelativeLayout. В моем случае, в частности, я беспорядочно толкнул его между андроидами: paddingTop и tools: поля контекста

Надеюсь, это поможет: D

У меня была такая же проблема. В разделе «Построение намерения» в инструкциях Android Studio легко пропустить эту строку:

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

Убедитесь, что это включено выше @Override в MainActivity.java, и вы все настроены 🙂

Я думаю:

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

Должно быть:

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

Вот обновленное решение для этого.

Intent – это подкласс Main Activity, поэтому нам не нужно явно указывать. Это означает, что мы можем вызвать EXTRA_MESSAGE, а не 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); 

Я решил ту же проблему чистым проектом, а затем построил град, попробуйте один раз.

 "@layout/activity_display_message" 

Это макет. Не идентификатор.

Вы правильно использовали его здесь как R.layout

 setContentView(R.layout.activity_display_message); 

Но это неправильно, так как R.id

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

Исправленный метод в идеале должен выглядеть так, но обратите внимание, что вам может понадобиться некоторые LayoutParams в TextView, иначе он может не отображаться на экране.

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

Ошибка возникает из файла MainActivity.java.

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

Где я (R.id.editText); ….. система поставлена ​​(R.id.edit_message);

Edit_message – это функция, добавленная в текстовое поле, но она находится под блоком (EditText) кода. Новый для Java, не уверен, что вызывается блоком кода, и не уверен, почему программа поместила его в открытый класс. Надеюсь это поможет.

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

У меня было такое же сообщение об ошибке: не удается найти символьную переменную activity_display_message

Я решил это, добавив android: id в 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> 

Проверьте, есть ли у вас такой код в MainActivity.java :

 public class MainActivity extends AppCompatActivity { public static final String EXTRA_MESSAGE = "com.example.MyApplicationstart.MESSAGE"; 

«Com.example.MyApplicationstart.MESSAGE», где «MyApplicationstart» – это название вашего проекта.