如何在没有重复活动的情况下在测验应用中显示多个屏幕?

时间:2013-03-11 10:58:20

标签: android android-activity

我是Android开发的完全noob,我希望通过构建一个真实的测验应用程序来改善。我有一些非常高级别的问题:

  1. 一个测验屏幕有一个问题和五个答案。这是使用一个活动创建的。现在我希望用户导航到下一个屏幕,这只是下一个问题,依此类推。

  2. 我是否针对每个问题创建新活动,还是使用相同的活动切换内容?我该怎么做?

  3. 内容资源是XML Feed - 那么如何帮助用户从问题屏幕导航到问题屏幕?

5 个答案:

答案 0 :(得分:3)

您无需创建其他活动。只需更改下一步按钮的视图内容即可。

假设您正在TextView上显示问题,那么只需在下一次点击事件中更改其文本即可。同样的事情也适用于答案。

答案 1 :(得分:1)

我建议使用Fragments approach

答案 2 :(得分:1)

对于您描述的具体示例,绝对没有理由进行多项活动。

如果您对问题长度和答案长度(以及答案数量)有特定限制,您可以布置一个xml,其中已准备好填充TextView个,然后您可以动态填写值当你从一个问题转到另一个问题。如果你想得到额外的时髦,添加一个ViewFlipper并在运行时将该布局膨胀到鳍状肢,并添加一个动画,让用户在逐个问题时获得更流畅的体验。 / p>

我认为这个问题有点过于宽泛,你应该开始实际编写应用程序并在遇到麻烦时提出更具体的问题(你可能没有)。

答案 3 :(得分:1)

我认为不要使用多重活动代表不同的问题。

在main.xml布局中

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:orientation="vertical" >

        <LinearLayout
            android:id="@+id/linear_Layout"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
        </LinearLayout>
    </LinearLayout>

只需夸大您要表示的视图并添加到此LinearLayout。 回答完一个问题后,只需删除膨胀的视图,然后再次膨胀新视图等等。

LayoutInflater mInflater = (LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        View view= (View) mInflater.inflate(R.layout.question1, null);
        LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);
        p.setMargins(5, 5, 5, 5);
        layout.setGravity(Gravity.CENTER_HORIZONTAL);
        layout.addView(view, p);

在下一个问题按钮的Activity类中单击

这样做 / **它会删除你膨胀的所有视图。

layout.removeAllViews();

这是一种很好的做法。

答案 4 :(得分:0)

无需创建新活动。只需更改页面内容即可。