【发布时间】:2015-02-10 09:19:22
【问题描述】:
我需要做一个数学测验。这是工作流程:
点击按钮(开始)我需要显示一个问题,例如5+5,在屏幕上停留 2 秒,然后我显示一个对话框,询问先前操作的结果。我需要重复一遍,例如5次。最后,我需要向用户显示正确答案的数量。
我有 Java 经验,但我是 Android 新手。我已阅读有关 Android 线程的各种文章和示例,但尚未找到此工作流程的解决方案。
据我所知,我无法阻止或暂停主/UI 线程,但问题是我应该重复问题,例如5 次,每次后(2 秒后)我应该暂停活动以显示对话框,然后返回显示另一个问题。
提前致谢!
编辑: 这是我现在的代码。该数字显示在屏幕上,并在 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。我还尝试为对话框创建单独的 Activity 并将这一行添加到 Manifest:
android:theme="@android:style/Theme.Dialog"
但同样的事情也会发生。
【问题讨论】:
标签: java android multithreading android-activity android-dialog