Gil*_*mov 10
实际上,没有办法动态创建新活动.
但您可以创建同一活动的多个实例.这需要将您的活动的launchMode设置为"standard"或"singleTop".
此外,您可以使用初始化标志让每个实例使用自己的特定布局,从而创建与多个活动完全相同的用户体验:
Intent intent = new Intent(this, MyDynamicActivity.class);
Bundle b = new Bundle();
b.putInt("LayoutIndex", mode);
intent.putExtras(b);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
活动:
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
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如何动态填充活动的不同实例?
嗯,没有简单的方法.例如,您无法创建ad-hoc 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);
Run Code Online (Sandbox Code Playgroud)
毫无疑问,创建这样一个动态机制将会有很多工作.
| 归档时间: |
|
| 查看次数: |
4954 次 |
| 最近记录: |