Любая проблема, которую я нашел, связанная с этим, всегда была устранена путем исправления путей файлов макета, и я уверен, что мои права верны.Ресурс «ценности-большие земли» Android не загружается
У меня очень простой макет, который должен иметь разделенный вид для больших ландшафтных устройств. Поэтому у меня есть:
- макет/main.xml
- макет/main_twopane.xml
- значения/main.xml
- значения-большой земли/main.xml
И Я загружаю планшет Nexus 7 в ландшафт (который классифицируется как большое устройство). Проблема в том, что всегда загружается main.xml
, когда в соответствии с Android documentation я должен загрузить две панели для больших устройств на ландшафт.
Вот код:
макет/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragment_catches"
android:name="com.cohenadair.anglerslog.fragments.CatchesFragment"
tools:layout="@layout/fragment_catches"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
макет/main_twopane.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragment_catches"
android:name="com.cohenadair.anglerslog.fragments.CatchesFragment"
tools:layout="@layout/fragment_catches"
android:layout_width="200dp"
android:layout_height="match_parent" />
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragment_catch"
android:name="com.cohenadair.anglerslog.fragments.CatchFragment"
tools:layout="@layout/fragment_catch"
android:layout_width="fill_parent"
android:layout_height="match_parent" />
</LinearLayout>
значения/main.xml
<resources>
<item name="main_layout" type="layout">@layout/main</item>
<bool name="has_two_panes">false</bool>
</resources>
значения -large-land/main.xml
<resources>
<item name="main_layout" type="layout">@layout/main_twopane</item>
<bool name="has_two_panes">true</bool>
</resources>
код, который загружает раскладку, в MainActivity.java
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
И в каждом отдельном фрагменте:
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View aView = super.onCreateView(inflater, container, savedInstanceState);
// set the list's adapter
ArrayAdapter adapter = new ArrayAdapter<Catch>(this.getActivity(), android.R.layout.simple_list_item_1, Logbook.getSharedLogbook().getCatches());
setListAdapter(adapter);
return aView;
}
И
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_catch, container, false);
}
Пожалуйста, разместите свой Java-код, где вы загружаете этот макет. – CommonsWare
Хм?У меня создалось впечатление, что система автоматически загружает макет в зависимости от размера или ориентации устройства. Ссылка на документацию в вопросе ничего не говорит о загрузке макета (если это так, я пропустил его). – cohenadair
«У меня создалось впечатление, что система автоматически загружает макет в зависимости от размера устройства/ориентации» - только в ответ на какой-то Java-код где-то, пытающийся загрузить макет, например 'setContentView()' в 'Activity 'или' inflate() 'на' LayoutInflater'. – CommonsWare