您好我正在使用视图寻呼机和片段。我想覆盖方向更改,以便每次方向更改时都不会运行onCreateView方法。这是因为在我的应用程序的onCreateView中运行了很多,导致方向变化缓慢。我的服务器上的东西也经过了检查,但实际上没有理由因为方向改变而没有理由全部运行。
这是我到目前为止所设置的
我在清单
中的MainActivity上有这个 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中更改方向时更改布局的任何帮助都将非常感激。
谢谢!
答案 0 :(得分:2)
1)您应该将所有服务器检查例程和其他一次性操作放在Fragment onCreate()中,而不是onCreateView()。如果您需要在加载时显示某种“正在加载...”屏幕,那么我建议使用 FragmentActivity 来扩充至少具有 FrameLayout 的布局包含“正在加载...”类型的图形。首先,FragmentActivity将运行onCreate(),其中它将首先膨胀初始View然后实例化Fragment。将服务器检查代码放在Fragment的onCreate()中,然后在其onCreateView()方法中为此Fragment充气。这是我的一个项目中的一个示例,它初始化了一个Microphone按钮,它实际上是一个片段:
<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。 (例如,如果此片段可能会为Info,Hum和Lyrics提供不同的视图,那么每个麦克风片段的标签名称将是 MetaMicButton , HumMicButton 和 LyricsMicButton 。我还需要在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您可以根据屏幕大小,语言,停靠模式,夜间模式及其任意组合定义不同的布局。