在同一活动的布局之间切换:可能但建议?

时间:2012-12-03 14:59:06

标签: android android-layout

我想知道当你想要显示另一个屏幕时,为什么人们会继续推荐开始新的活动?

假设我想显示一个带有标签的屏幕和一个edit_text来询问用户名,然后是另一个类似的屏幕询问年龄,然后是另一个屏幕来显示输入的数据并要求确认。

我这样做了:

main_layout.xml:   has a button let's say mainButton, onClick="startRegistration"
name_layout.xml:      edittext asking for name
age_layout.xml:        edittext asking for age
confirm_layout.xml:    display info + button to confirm

并在:

public class MainActivity extends Activity {

onCreate(...) {
   ...
   setContentView(R.layout.main_layout);
}

public void startRegistration(View clickedButton) {
   setContentView(R.layout.name_layout);
}
..
}

...依此类推,所有按钮处理程序都是主类中的公共void方法,每个方法都包含setContentView(),下一个布局作为参数。

我觉得这是一种糟糕的编程风格,但它的工作原理非常好。这样做可以吗?如果没有,还有其他简单方法吗?为这样的事情开始新的活动对我来说真的很愚蠢。

2 个答案:

答案 0 :(得分:0)

通常,您会在“活动”中将“活动”组合在一起。对您而言,注册使用多个屏幕但相互链接。我建议在ViewFlipper中使用1个Activity。

为所有人提供1个活动将搞砸用户的导航。必须特别处理Back键。 “如果返回键,请设置此内容,否则设置此内容等”

答案 1 :(得分:0)

如果您为同一类型的屏幕编码不同的布局,那么它并不是一个理想的想法。更好的想法是具有相同的布局并指向布局相同的类中的相同布局。在您希望拥有额外/更少控制或不同控制的屏幕中,只需拥有此类控件的唯一ID即可。

从ID中引用控件,您将拥有一个布局文件。编写控件相同的不同布局类将为代码重复铺平道路,因此不是理想的编码方式。