我现在正在使用app,我想执行以下操作:
- 用户创建新页面(新活动和xml布局)。
- 将用户页面保存到数据库。
- 将页面添加到ListView作为项目,并在用户
时启动它 醇>
会点击它 在ListView上。
我在这里看到很多答案"动态创建活动"而且我理解它 不可能,所以我不知道该怎么做。
用户可以创建的页面数量不受限制,因此必须动态完成。 ListView中每个页面的布局都是相同的。
非常感谢!!!
答案 0 :(得分:10)
确实无法动态创建新活动。
但您可以创建同一活动的多个实例。这需要将您的活动的launchMode设置为"标准"或" singleTop"
此外,您可以使用初始化标志让每个实例使用自己的特定布局,从而创建与多个活动完全相同的用户体验:
Intent intent = new Intent(this, MyDynamicActivity.class);
Bundle b = new Bundle();
b.putInt("LayoutIndex", mode);
intent.putExtras(b);
startActivity(intent);
活动:
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
}
}
但是,如何动态填充活动的不同实例?
嗯,没有简单的方法。例如,您无法创建特定的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);
毫无疑问,创建这样一个动态机制将会有很多工作。
答案 1 :(得分:3)
也许您可以使用Dialog或PopupWindow而不是Activity?