当前位置: 首页 > 知识库问答 >
问题:

片断和onConfigurationChanged

曹昊焱
2023-03-14
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

 setContentView(R.layout.main);
}

现在我有一个展示viewpager的活动,它包含三个片段。一切运转正常。在碎片中检测旋转

public class FRG_map_web extends Fragment  {

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        Log.i("myLogs", "Rotation");

    }

问题是片段没有使用setContentView(r.layout.main);这是代码:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.frg.myFragment, null); 

我试着用:

LayoutInflater inflater = inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

view = inflater.inflate(R.layout.frg.myFragment, null); 

...

LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

view = inflater.inflate(R.layout.frg.myFragment, null); 

...

LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );

view = inflater.inflate(R.layout.frg.myFragment, null); 

...

LayoutInflater li = LayoutInflater.from(context);

共有1个答案

胥诚
2023-03-14

如果我理解正确的话,你不想让碎片在每次旋转时重新加载。相反,您希望转发视图并使用已有的信息更新它们。

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // Get a layout inflater (inflater from getActivity() or getSupportActivity() works as well)
    LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View newView = inflater.inflate(R.layout.frg.myFragment, null);
    // This just inflates the view but doesn't add it to any thing.
    // You need to add it to the root view of the fragment
    ViewGroup rootView = (ViewGroup) getView();
    // Remove all the existing views from the root view.
    // This is also a good place to recycle any resources you won't need anymore
    rootView.removeAllViews();
    rootView.addView(newView);
    // Viola, you have the new view setup
}

根据文档(getView()),getView()返回与从onCreateView()返回的视图相同的视图,但它没有返回。它实际上返回您在onCreateView()中返回的视图的父视图,这正是您所需要的。getView()将返回NoSaveStateFrameLayout的一个实例,该实例专门用于片断,作为其根视图。

希望这能有所帮助。

 类似资料:
  • 片段中的、和有什么不同,它们各自用于什么?

  • 请检查我在MovieFragmentBase中使用的viewPagerAdapter的代码。

  • 本文向大家介绍上传图片js判断图片尺寸和格式兼容IE,包括了上传图片js判断图片尺寸和格式兼容IE的使用技巧和注意事项,需要的朋友参考一下 js代码: css代码(这个是必须写的,如果不写,ie下不起作用) html代码:

  • 问题 假如你有一个HTML片断 (比如. 一个div 包含一对p 标签; 一个不完整的HTML文档) 想对它进行解析。这个HTML片断可以是用户提交的一条评论或在一个CMS页面中编辑body部分。 办法 使用Jsoup.parseBodyFragment(String html)方法. String html = "<div><p>Lorem ipsum.</p>"; Document doc =

  • 我是android编程的新手。虽然我在Access上搜索了这个问题,但没有找到任何令人满意的解决方案: 问题是:我想动态地将一个图像设置为imageview--它位于一个片段中。 我想使用图像的文件名来完成这个操作。 但我得到了NullPointerException: java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“void android.widge

  • 我想要一个选项卡布局,其中,在每个选项卡上有两个片段,一个在上面显示任务的进度,通过在3个选项卡中提供从开始到结束的输入来完成,和另一个在进度片段下面的主片段将接受输入。 我试了两天所有的方法:( 我的解决方案我尝试了一个包含两个framelayout的布局,用于将主片段添加到ViewPager的两个选项卡中,如下所示: 在活动开始时,我执行此操作,请参见在主片段中用于加载不同标签位置的详细片段的