(我是Android和Java的新手,所以请原谅任何不正确的措辞和术语。我尽力做到有道理)
我创建了一个名为Layout
的{{1}}。然后在课程game_activity.xml
中,在Game
中,我将内容视图设置为onCreate
:
game_activity
我还创建了public class Game extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game_activity);
}
//...code
//...code
}
Subclass
,其扩展了Container
:
LinearLayout
在private class Container extends LinearLayout {
public Container(Context context) {
super(context);
}
//...code
//...code
}
中,有game_activity.xml
名为LinearLayout
。我希望mainLayout
成为mainLayout
的一部分,但我不知道如何正确实现它。
我试过这样的事情:
Container
但这种方法不起作用。如何让public class Game extends Activity {
private LinearLayout mainLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game_activity);
mainLayout = (LinearLayout) findViewById(R.id.mainLayout);
mainLayout = new Container(getApplicationContext());
}
private class Container extends LinearLayout {
public Container(Context context) {
super(context);
}
//... code
//... code
}
}
成为mainLayout
课程的一部分?
提前致谢
答案 0 :(得分:1)
您只需在现有的LinearLayouts中添加LinearLayouts即可。
因此,正如您的问题所说,您需要mainLayout LinearLayout作为Container的一部分(Linear Layout类的子类)。
您只需将容器布局添加到Xml文件中,然后以编程方式将MainLayout线性布局添加到容器布局中。
然后,为了访问Container类中内部LinearLayout的目的,您可以简单地在添加的mainLayout对象上放置一些Tag,并通过遍历Children并使用相关标记查找子布局来访问Container类。
我希望这会有所帮助。
答案 1 :(得分:1)
在game_activity.xml
中,您需要使用<LinearLayout></LinearLayout>
代码,而不是拥有<com.YOUR_PACKAGE_NAME.Container></com.YOUR_PACKAGE_NAME.Container>
代码。您可以在AndroidManifest.xml
。
然后要在Container
中获得对Game
的引用,代码如下所示:
public class Game extends Activity {
private Container mainLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game_activity);
mainLayout = (Container) findViewById(R.id.mainLayout);
}
private static class Container extends LinearLayout {
public Container(Context context) {
super(context);
}
//... code
//... code
}
}
旁注,您应该考虑将Container
移动到自己的文件中。否则,你必须使它成为static
类。此外,当获取对xml中布置的对象的引用时,您不必自己构造它们,因为Android将构造实例作为布局膨胀过程的一部分。
LinearLayout
课程中设置Container
,您的game_activity.xml
应该是这样的:
<com.YOUR_PACKAGE_NAME.Container
attributes...>
<LinearLayout
attributes...>
<SomeRandomView
attributes... />
</LinearLayout>
</com.YOUR_PACKAGE_NAME.Container>