嗨,我正在使用视图寻呼机和碎片。我想覆盖方向更改,以便每次定向都不会运行OnCreateview方法。这是因为我的应用程序中的OnCreateview中运行了很多,这导致方向更改慢。同样,我的服务器上的东西也被检查了,什么也不是,因此实际上没有理由仅仅因为方向改变了所有这些。

这是我到目前为止设置的

我在清单中的主动行动上有这个

 android:configChanges="orientation|keyboardHidden"

然后我在片段中使用它

@Override
public void onConfigurationChanged(Configuration newConfig) {
  super.onConfigurationChanged(newConfig);
    getLayoutInflater(getArguments()).inflate(R.layout.main, null, false);
    Toast.makeText(getActivity(), "changed orientation", Toast.LENGTH_LONG).show();
}

当我运行应用程序和开关方向时,我会看到敬酒显示,但是布局永远不会改变景观。因此,我认为也许Android并没有意识到它是在景观中,因为我覆盖了它,而是将布局更改为诸如对话框的布局之类的荒谬的东西不会导致力量关闭,或者它保留的任何肖像布局都被拉伸了结果,所以我知道如何使布局充气有问题。

在ViewPager中更改方向时更改布局的任何帮助将不胜感激。

谢谢!

有帮助吗?

解决方案

1)您应该将所有服务器检查例程和其他一次性操作放在fragment onCreate()而不是increateview()中。如果您需要在加载时显示某种“加载...”屏幕,那么我建议您使用 碎片性 至少将一个布局充气 Framelayout 其中包含“加载...”类型的图形类型。首先,碎片性将运行onCreate(),其中将首先夸大初始视图,然后实例化片段。将服务器检查代码在片段的ongreate()中,然后在其onCreateview()方法中夸大此片段的任何视图。这是我的一个项目中的一个示例,该示例初始化了一个麦克风按钮,这确实是一个碎片:

<FrameLayout
       android:id="@+id/recorder_mic_fragment"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       />

然后,麦克风片段实际上是通过以下Java代码实例化的:

// make the Mic button
FragmentManager fragMgr = getFragmentManager();
FragmentTransaction xact = fragMgr.beginTransaction();
if (null == fragMgr.findFragmentByTag(FRAG_TAG)) {
    xact.add(R.id.mic_button_frame, MicFragment.newInstance(queryType), FRAG_TAG).commit();
}

frag_tag实际上是您给片段实例的唯一标签名称,它与片段的r.id不同。这样,您可以使用FindfragmentByTag()来确保片段在所需的所有位置正确实例化。

如果您想在片段中加载片段,例如我的应用程序的实际工作方式,则可以按摩此代码。如果您的片段会夸大几种可能的视图之一,请使用IF语句选择适当的帧ID并指定唯一的frag_tag。我建议您为您为片段创建的每个framelayout使用不同的R.ID。 (例如,如果此片段可能会夸大信息,嗡嗡声和歌词的不同视图,那么每个麦克风片段的标签名称将是 metamicbutton, Hummicbutton, , 和 歌词micbutton. 。我还需要在r.id.meta_mic_button_frame等之间进行选择。

2)当您在肖像和景观模式之间切换时,您需要在文件夹res/layout和res/layout_land中定义不同的XML布局。 (或者,如果要将景观模式视为默认值,则可以制作Res/Layout和Res/Layout_port。)。请检查此链接: http://developer.android.com/guide/topics/resources/providing-resources.html#alternativeresources 您可以根据屏幕尺寸,语言,码头模式,夜间模式及其任何组合来定义不同的布局。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top