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
,
Я знаю, что все это звучит немного запутанно, когда вы начинаете, но скоро все это будет естественно.