Java 安卓;“重视大片土地”;资源未加载
我发现的任何与此相关的问题都可以通过更正布局文件路径来解决,我很确定我的问题是正确的 我有一个非常简单的布局,应该有一个大型景观设备的分割视图。因此,我:Java 安卓;“重视大片土地”;资源未加载,java,android,xml,android-layout,Java,Android,Xml,Android Layout,我发现的任何与此相关的问题都可以通过更正布局文件路径来解决,我很确定我的问题是正确的 我有一个非常简单的布局,应该有一个大型景观设备的分割视图。因此,我: layout/main.xml 布局/main_twopane.xml values/main.xml values-large-land/main.xml 我正在横向加载Nexus7平板电脑(分类为大型设备)。问题是它总是在加载main.xml时,根据“我应该加载的内容”加载横向大型设备的双窗格布局 代码如下: layout/main.
- layout/main.xml
- 布局/main_twopane.xml
- values/main.xml
- values-large-land/main.xml
main.xml
时,根据“我应该加载的内容”加载横向大型设备的双窗格布局
代码如下:
layout/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>
在每个片段中:
@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;
}
问题是它总是加载main.xml
这是因为您告诉Android加载main
:
setContentView(R.layout.main);
如果您希望它按照值/…
的提示加载主布局
,请将其更改为:
setContentView(R.layout.main_layout);
我不太清楚为什么要在这里使用布局资源别名方法。更简单的是,IMHO,您可以使用
res/layout/main.xml
和res/layout large/main.xml
,然后在Java代码中请求R.layout.main
,并转储别名。但是,您的别名应该可以工作,但前提是并且仅当您请求别名时。请将您的Java代码发布到加载此布局的位置。嗯?我觉得系统会根据设备大小/方向自动加载布局。问题中的文档链接没有提到任何关于加载布局的内容(如果有,我就错过了)。“我觉得系统会根据设备大小/方向自动加载布局”——只是为了响应尝试加载布局的某些Java代码,例如setContentView()
在活动上
,或LayoutInflater
上的充气()
。Nexus 7平板电脑-我认为这存在一些问题,它认为这是一款具有特定更新版本的手机(尺寸、电话、工作原理)。请使用以下代码进行验证:或者使用@commonware等应用程序,我已经添加了加载每个布局的代码。我认为这是正确的代码。我使用别名,因为最终我将多次重用片段,并且我不想要重复的layout.xml文件。切换到R.layout。主布局似乎不起作用。我要更换设备,因为上面的评论提到了Nexus 7平板电脑中可能存在的一个bug。这是你的问题。我认为,无论哪种方式,都不需要切换设备,只需验证它是否真的认为它很大。这就是解决方案。谢谢,公共软件。韦斯顿,你说得对,安卓确实认为Nexus7模拟器是一部手机。谢谢你。
@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);
}
setContentView(R.layout.main);
setContentView(R.layout.main_layout);