动态创建活动

时间:2014-07-16 20:57:59

标签: android

我现在正在使用app,我想执行以下操作:

  
      
  1. 用户创建新页面(新活动和xml布局)。
  2.   
  3. 将用户页面保存到数据库。
  4.   
  5. 将页面添加到ListView作为项目,并在用户
  6. 时启动它   

会点击它     在ListView上。

我在这里看到很多答案"动态创建活动"而且我理解它 不可能,所以我不知道该怎么做。

用户可以创建的页面数量不受限制,因此必须动态完成。 ListView中每个页面的布局都是相同的。

非常感谢!!!

2 个答案:

答案 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?