gpt4 book ai didi

java - 布局和子类

转载 作者:行者123 更新时间:2023-12-02 05:09:45 24 4
gpt4 key购买 nike

(我是 Android 和 Java 新手,所以请原谅任何不正确的措辞和术语。我尽力理解)

我创建了一个名为 game_activity.xml布局。然后在 Game 类的 onCreate 中,我将内容 View 设置为 game_activity:

public class Game extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.game_activity);
}

//...code
//...code
}

我还创建了一个子类 Container,它扩展了LinearLayout:

private class Container extends LinearLayout {

public Container(Context context) {
super(context);
}

//...code
//...code
}

game_activity.xml中,有一个名为mainLayoutLinearLayout。我希望 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 成为 Container 类的一部分?

提前致谢

最佳答案

在您的 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类(class)。此外,当获取对 xml 中布局的对象的引用时,您不必自己构造它们,因为 Android 将构造实例作为布局膨胀过程的一部分。

编辑:抱歉,误读了问题。拥有LinearLayout在您的Container内类(class),你的game_activity.xml应该读成这样:

<com.YOUR_PACKAGE_NAME.Container 
attributes...>

<LinearLayout
attributes...>

<SomeRandomView
attributes... />

</LinearLayout>
</com.YOUR_PACKAGE_NAME.Container>

关于java - 布局和子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27431027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com