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
我正在横向加载Nexus7平板电脑(分类为大型设备)。问题是它总是在加载
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);