繁体   English   中英

Android Math测验(线程操作)

[英]Android Math quiz (Thread manipulation)

我需要做一个数学测验。 这是工作流程:

在按钮上单击(开始),我需要显示一个问题,例如5 + 5,该问题在屏幕上停留2秒钟,之后显示一个对话框,询问上次操作的结果。 我需要重复5次。 最后,我需要向用户显示正确答案的数量。

我有Java经验,但是刚接触Android。 我已经阅读了有关Android线程的各种文章和示例,但尚未找到此工作流的解决方案。

据我所知,我无法阻止或暂停main / UI线程,但是问题是我应该重复问题5次,每次重复2秒后,我应该暂停活动以显示Dialog,然后返回显示另一个问题。

提前致谢!

编辑:这是我的代码。 屏幕上显示该号码,并在2秒钟后显示警告对话框,要求输入该号码。 但是问题在于该应用程序不等待用户输入,而是继续显示新的随机数,并每2秒打开一个新的警报对话框。

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_questions);

    tv = (TextView) findViewById(R.id.questionText);

    handler = new Handler();

    Runnable r = new Runnable() {
        public void run() {
            tv.setText(String.valueOf(rand.nextInt(50) + 1));
            createDialog();
            handler.postDelayed(this, 2000);
        }
    };

    handler.postDelayed(r, 2000);
}


 protected void createDialog() {
    LayoutInflater li = LayoutInflater.from(context);
    View promptsView = li.inflate(R.layout.activity_answer_dialog, null);

    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);

    // set prompts.xml to alertdialog builder
    alertDialogBuilder.setView(promptsView);

    final EditText userInput = (EditText) promptsView.findViewById(R.id.editTextDialogUserInput);

    // set dialog message
    alertDialogBuilder
            .setCancelable(false)
            .setPositiveButton("OK",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,int id) {
                            // get user input and set it to result
                            // edit text
                            result.setText(userInput.getText());
                        }
                    })
            .setNegativeButton("Cancel",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,int id) {
                            dialog.cancel();
                        }
                    });

    // create alert dialog
    AlertDialog alertDialog = alertDialogBuilder.create();

    // show it
    alertDialog.show();
}

PS。 我也尝试为对话框创建单独的活动,并将此行添加到清单中:

android:theme="@android:style/Theme.Dialog" 

但同样的事情发生了。

您使用事件驱动的编程和计时器。 要在2秒后显示对话框,最简单的方法是使用postDelayed将可运行对象发布到处理程序,这将在N毫秒内调用您的可运行对象。 然后显示对话框。

您无需暂停活动即可显示对话框,只需显示它即可。 对话框完成后要运行的任何代码都应放在对话框的“确定”按钮的处理程序中。 换句话说,响应于按下按钮的事件,将调用您的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM