在几个按钮上动态调用Intent

时间:2011-04-17 11:57:50

标签: android xml android-activity

我目前有一个看起来像书的应用程序:几个页面,底部的2个按钮链接到下一页和上一页。

我目前正在做的就是这样,在我的每个XML布局上,我添加了两个onClick属性的按钮。

例如,在第5页,我有上一个按钮:

android:onClick="Page4"

和下一个按钮

android:onClick="Page6"

我还用这些属性编写了一个CustomActivity:

public void Page4(View v) {
    startActivity(new Intent(this, Page04.class));
    finish();
}
public void Page6(View v) {
    startActivity(new Intent(this, Page06.class));
    finish();
} 

这项工作很好,我写了这样一个完整的应用程序,但我真的想做一些更聪明的东西。

你可以想象,当我有100页的东西时,我的代码非常糟糕!

我不知道,比如“PreviousPage”或“NextPage”

public void PreviousPage(View v) {
    Intent i= "Generate dynamically an intent for previous page"
    startActivity(i);
    finish();
} 

我在想什么也在我的xml中给出了一个参数,并做了类似的事情:

public void GotoPage(View v, int page) {
    startActivity(new Intent(this, Page"+page+".class));
    finish();
} 

我希望你明白我的意思和我在寻找的东西。

1 个答案:

答案 0 :(得分:3)

创建包含您的活动的java.util.List或java.Util.Map。

List activities = new ArrayList();
activities.add(Activity1.class);
activities.add(Activity2.class);
activities.add(Activity3.class);

致电

开始您的活动
startActivity(new Intent(this,activities.get(i));

如果您需要能够按键搜索,则可以使用地图

进行相同操作
Map activities = new HashMap();
activities.add("activity1",Activity1.class);
activities.add("activity2",Activity2.class);
activities.add("activity3",Activity3.class);

致电

开始您的活动
startActivity(new Intent(this,activities.get("activity1"));

通过将其存储在List / Map中,实现第一个,上一个,下一个,最后一个功能应该相当容易。