在我的应用程序中,我只有一个活动MainActivity
,其中activity_main.xml
我有<FrameLayout>
标记我使用{{1}来更改屏幕内容以这样的方式:
Frame
我可以在调用FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.id_of_FrameLayout, myFrameInstance)
.commit();
之前在Buttons
中初始化某些字段(例如TextView
,ButtonListener
,Frame
s)吗?现在我每次都在onCreateView
初始化所有这些内容,因为只有在这个地方我才onCreateView
使用了我LayoutInflater
,但在我看来并不是真的有效。
所以我想在我的frame_this_screen.xml
课程中编写一些setUp()
方法,并将Frame
之类的内容从LayoutInflater
传递给它,以启动我在这个地方的所有字段MainActivity
只对这些字段进行一些小的更改。如何将此onCreateView
传递给我的LayoutInflater
方法?
答案 0 :(得分:0)
你只能在onCreateView()中初始化你的内容,可能只是创建一个你可以调用的方法,并传入inflater和viewGroup的参数来初始化你的内容并从你的onCreateView()方法调用它,如
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
setUp(inflater,container);
/*rest of the method*/
}
另外
private void setUp(LayoutInflater inflater,ViewGroup parent){
/*Set up your content here*/
}
答案 1 :(得分:0)
您可以从这样的上下文中获取对LayoutInflater的引用(检查它是否为!= null)或选择another variant。
(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)
同时确保您没有花太多时间进行过早优化 - 进行一些测量以查看onCreateView()
是否确实存在问题。