gpt4 book ai didi

android - 动态创建 Activity

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:18:34 24 4
gpt4 key购买 nike

我现在正在开发应用程序,我想做以下事情:

  1. The user creates a new page (new activity and xml layout).
  2. Saving the user's page to database.
  3. Adding the page to ListView as an item, and launch it when the user

会点击它 在 ListView 上。

我在这里看到了很多关于“动态创建 Activity ”的答案,我明白这是不可能,所以我不知道该怎么做。

用户可以创建的页面数量没有限制,因此必须动态完成。ListView中每一个页面的布局都是一样的。

非常感谢!!!

最佳答案

确实没有办法动态创建新 Activity 。

但是您可以为同一 Activity 创建多个实例。这将需要将您的 Activity 的启动模式设置为“标准”或“singleTop”。

此外,您可以使用初始化标志让这些实例中的每一个都使用自己的特定布局,从而创建与具有多个 Activity 完全相同的用户体验:

Intent intent = new Intent(this, MyDynamicActivity.class);
Bundle b = new Bundle();
b.putInt("LayoutIndex", mode);
intent.putExtras(b);
startActivity(intent);

和 Activity :

class MyDynamicActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

Bundle b = getIntent().getExtras();
int layoutIndex = b.getInt("LayoutIndex");
// and here populate the activity differently based on layoutIndex value
}

}

但是如何动态地填充 Activity 的不同实例呢?

嗯,没有简单的方法。例如,您不能创建一个临时的 XML 布局文件并将其存储在文件系统,因为 XML 布局必须以特定格式编译才能由 Android 加载。

您唯一能做的就是从您的 Java 代码中按照规则动态设置布局小部件由用户设置。下面是 Java 布局生成代码的示例:

LinearLayout layout = new LinearLayout(this);
layout.setGravity(Gravity.CENTER);

LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
Button button = new Button(this);
button.setText("My Button");
layout.addView(button, params);

setContentView(layout);

毫无疑问,创建这样一个动态机制将需要大量工作。

关于android - 动态创建 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24790607/

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