R файл не генерирует необходимые переменные

Я пытаюсь создать свое первое приложение для Android HelloWorld. Я следую этому уроку, но он не комментирует мою проблему. Я не могу запустить приложение из-за ошибки в MainActivity.java в "контейнере" в закомментированной строке:

public class MainActivity extends ActionBarActivity {

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

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()) //error line
                    .commit();
        }
    }

    //more code

Предлагаемые решения от Eclipse - добавление поля или константы "container" к типу "id". Когда я пытаюсь это сделать, Eclipse автоматически отменяет изменения.

Файл автоматически сгенерирован, и я понятия не имею, что в нем происходит, потому что я начинающий с разработки для Android. Как мне решить или обойти эту ошибку?

При наведении курсора на текст ошибки появляется сообщение "контейнер не может быть разрешен или не является полем".

Вот мой Activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="horizontal">
    <EditText android:id="@+id/edit_message"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:hint="@string/edit_message" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send" />
</LinearLayout>

2 ответа

Решение

У вас нет никакого виджета с id = container в вашем activity_main.xml. Если вы хотите, вы можете установить идентификатор LinearLayout для контейнера следующим образом (добавив еще одну строку):

android:id="@+id/container

В этом случае фрагмент будет добавлен в LinearLayout под виджетами EditText и Button.

R.id.container должен быть идентификатор в макете R.layout.activity_main

Вы должны отредактировать layout/activity_main.xml иметь это

редактировать:

линия

        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment()) //error line
                .commit();

добавляет фрагмент к ViewGroup с идентификатором R.id.container, PlaceholderFragment создаст свой вид внутри этого ViewGroup,

Я знаю, что все это звучит немного запутанно, когда вы начинаете, но скоро все это будет естественно.

Другие вопросы по тегам