【发布时间】:2017-02-10 01:38:02
【问题描述】:
我看到this question 关于在 AlertDialog 中放置一个微调器,但从我可以看到对话框显示,脚本继续。一旦做出选择,它也会迅速关闭。如果您有一个 onDismiss 或 onClick 侦听器根据您选择的内容触发单独的函数/活动,这将是一件好事,但这不是我需要的。
目前,我的应用正在轮询 TimerTask 内的 URL,并检索数据。在这个TimerTask 中,数据被解析并最终保存。根据数据,可能需要向用户询问更多详细信息。
我的目标是等到用户从微调器对话框中进行选择,单击“确定”按钮,然后继续解析数据并将其发送到另一个类以存储在数据库中。我该怎么做?
Timer timer = new Timer();
TimerTask checkApi = new TimerTask(){
@Override
public void run(){
try {
JSONObject changes = new JSONObject(/* External class that gets data from URL */);
if (changes.getBoolean("success")){
/* This is where the data is parsed */
/* Example skeleton code: */
JSONObject parsed_data = changes.getJSONObject("some_data");
if (changes.has("possibly missing detail")){
// This is where I want to wait for the selection to be made
String detail = dialogSpinnerResponse();
} else {
String detail = changes.getString("possibly missing detail");
}
parsed_data.put("important_detail", detail);
JSONObject reponse = new JSONObject(/* Result from sending parsed_data to external class for saving */);
// error handling if needed ...
} else {
e.printStackTrace();
}
} catch (JSONException e){
e.printStackTrace();
}
}
};
此计时器任务在任何函数之外初始化,作为我的 Main 类顶部的变量,并在我的活动的 onCreate() 方法中启动。
我已经对此进行了测试,它会正确轮询 url 并显示未过滤的数据。现在我正在实现它的解析部分,在将其发送到保存它的外部类之前,我需要等待用户输入。
【问题讨论】:
-
你应该显示一些代码。这样你就不必请求宽恕了。
-
你实现了spinner onItemSelected监听器吗?
-
我了解如何使用“onItemSelected”侦听器,但我不知道如何阻止我的脚本继续工作,直到做出这样的选择。此外,此微调器并不总是显示,这意味着此类侦听器中包含的所有内容都是某种“继续”命令,该命令设置所需的变量并继续工作。
-
我会添加一些东西给你看