Не удается найти ошибки символов в учебнике Android Studio?

https://developer.android.com/training/basics/firstapp/building-ui.html#Weight

Я делаю учебник выше, и для его создания я должен был прокомментировать эти строки внутри MainActivity.java внутри папки src (этот код находится в классе MainActivity внутри OnCreate ()).

// Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); // setSupportActionBar(toolbar); // // FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); // fab.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View view) { // Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) // .setAction("Action", null).show(); // } // }); 

Если я не буду комментировать эти строки, я получаю ошибки «не могу найти» и не могу построить, например:

Ошибка: не удается найти панель инструментов переменных символов

Может кто-нибудь объяснить на английском языке, почему это происходит и как я могу это исправить? Я пробовал различные import.R исправления, которые люди обнаружили, чтобы сражаться с Eclipse, случайно добавляя это, но они не работают. Мой импорт:

 import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.view.Menu; import android.view.MenuItem; 

Я использую Android Studio, как говорится в учебнике, и получаю ту же ошибку при чистой установке. Это мой автоматически сгенерированный импорт? Является ли учебник неправильным или несовместимым с последней версией Android Studio? Являются ли мои настройки сборки неправильными?

Класс R автоматически генерируется на основе того, что находится в ваших *.xml файлах, независимо от того, являются ли они строками, размерами, цветами, идентификаторами в макетах и ​​т. Д.

Когда вы вызываете код следующим образом:

 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 

Вы говорите: «Установите переменную панели инструментов в виджет с идентификатором toolbar ».

В xml, скажем, у вас было три текстовых вида:

 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/text_view_1" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/text_view_2" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/text_view_3" /> 

Когда я R.java проект, мой файл R.java будет обновлен, чтобы иметь ссылки в java-коде на те идентификаторы, которые я определил в xml, например:

  public static final int text_view_1=0x7f0c0066; public static final int text_view_2=0x7f0c0067; public static final int text_view_3=0x7f0c0068; 

Чтобы объяснить это на очень базовом уровне, файл R.java представляет собой Java-код, который генерируется для ссылки на элементы xml в действительном Java-коде.

Я предполагаю, что когда вы создали проект в Android Studio, он пришел с классом MainActivity.java . Вот где этот код исходит из того, что вы разместили выше. Часть, MainActivity.java выше в классе MainActivity.java по умолчанию,

 setContentView(R.layout.activity_main); 

Это устанавливает представление активности в файл макета xml, определенный в файле activity_main.xml. Внутри этого макета находится следующее

activity_main.xml

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout 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" android:fitsSystemWindows="true" tools:context=".MainActivity"> <android.support.design.widget.AppBarLayout android:layout_height="wrap_content" android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:theme="@style/AppTheme.AppBarOverlay" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> <include layout="@layout/content_main" /> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end|bottom" android:layout_margin="@dimen/fab_margin" android:src="@android:drawable/ic_dialog_email" /> </android.support.design.widget.CoordinatorLayout> 

Я предполагаю, что, возможно, ваш activity_main.xml не содержит этого определения для Toolbar и виджета FloatingActionButton .

Если вы действительно хотите начать с нуля, чтобы вы могли следовать руководству, которое вы связали, вы должны удалить MainActivity.java и просто создать свой собственный.

Я знаю, что это старо, но я собираюсь ответить, потому что этот учебник по-прежнему является лучшим для андроидских студий, и это плохо объясняет эту часть.

OnCreate () создает элементы, которые вы определяете в XML на Java, создавая активность по умолчанию, у вас все еще есть

 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 

И

 fab.setOnClickListener(new View.OnClickListener() 

Определенные в OnCreate, студии Android, так как не созданы эти ресурсы в android.R, потому что вы удалили там определения в XML как часть учебника!

Запустите> Очистить и Rerun'app 'или ctrl + F5 на Android Studio