我有一个扩展 RelativeLayout 的自定义视图(可以是任何其他视图组)。在这个视图中,我使用 addView() 添加了几个框架布局。此视图不存在 XML!视图构造器从代码中添加所有内容。我想将此自定义视图用作活动的任何其他内容视图。我有这个片段活动:MyView myview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myview = new MyView(this);
myview.getSomeContainedFrameLayoutOfView().setId(12345);
setContentView(myview);
}
然后我在 onResume 中执行此操作
@Override
protected void onResume() {
super.onResume();
View u = findViewById(12345); // test, returns null
u = myview.findViewById(12345); // test, also null
SomeFragment f = new SomeFragment();
FragmentManager m = getSupportFragmentManager();
FragmentTransaction ft = m.beginTransaction();
ft.replace(12345, f); // ofcourse error (no view found for id)
ft.commit();
}
为什么为findViewById
空?如果我将setContentView()
线路改为
setContentView(R.layout.myframelayouts);
一切正常。所以不知何故,我怀疑
setId(12345)
有什么不同:
android:id="@+id/someid"
我错过了什么?