【问题标题】:When do I have to inflate the layout of my custom view?我什么时候必须扩充自定义视图的布局?
【发布时间】:2011-12-28 11:23:22
【问题描述】:

我制作了一个自定义视图,用于查看页面的几个片段。

视图始终存储为片段的一个字段。我在构造函数中对布局进行了膨胀,并且在翻阅页面时一切正常。因为总是创建下一个片段,所以视图显示没有任何问题。但是如果我返回一个 Fragment 的销毁视图,它会重新创建一个错误,因为我仍然使用相同的自定义视图,它没有被膨胀,因为没有调用构造函数。

那么,我什么时候必须扩充自定义视图的布局?我不认为代码可以解决任何问题,但如果需要,我可以交付。

【问题讨论】:

    标签: android android-linearlayout custom-view layout-inflater


    【解决方案1】:

    在这个函数中:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
    {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.game_menu, menu);
        return true;
    }
    

    参考是HERE

    【讨论】:

    • 我说的是普通的CustomView。不是关于菜单。您确定您阅读了正确的问题或回答了正确的问题吗?
    • 如果不是菜单,构造函数上的膨胀代码(我假设 oncreate)必须工作。
    • 总是有一个activity被销毁,返回时再去oncreate。是一样的,如果你转动方向,去onDestroy然后再oncreate。必须调用构造函数
    • 但我们不是在谈论活动。它在 Fragment 中并且没有被销毁,只调用了 onViewDestroy 方法,而不是 onDestroy 方法。请再次阅读我的问题。
    【解决方案2】:

    我有一个包含视图的类DynamicRowView。你可以创建一个类并在你的主文件中调用这个类:

    public class DynamicRowView
    {
        public View getView(int layout_id,Activity context)
        {
            View view = null;
            view = context.getLayoutInflater().inflate(layout_id, null);
            return view;
        }
    }
    

    并在你想要View的主类中写下这个:

    dynamic_row_view = new DynamicRowView();
    
    View view = dynamic_row_view.getView(R.layout.row_menu_list, MenuListingPage.this);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-08
      • 2013-10-23
      • 1970-01-01
      • 2011-03-18
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多