AlertDialogにスピナーを置くことについては、this questionが見えましたが、ダイアログの表示が見えるものから、スクリプトは続けられます。また、選択が行われるとすぐにすぐに終了します。あなたが選択した内容に応じて別の機能/アクティビティを起動するリスナ(onDismiss
またはonClick
)を持っていれば、これは良いことですが、これは私が必要なものではありません。Alert Dialog Spinnerで入力を待つ
現在、私のアプリはTimerTask
のURLをポーリングし、データを取得しています。このTimerTask
の中で、データは解析され、最終的に保存されます。データに応じて、ユーザーに詳細を尋ねる必要があります。
私の目標は、ユーザーがスピナーダイアログから選択を行い、「OK」ボタンをクリックしてデータの解析を再開し、別のクラスに送信してデータベース内に格納するまで待つことです。これどうやってするの?
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();
}
}
};
このタイマータスクは、私のメインクラスの最上部にある変数として、任意の関数の外で初期化され、私の活動のonCreate()
方法で開始されました。
これをテストして、URLを正しくポーリングし、フィルタリングされていないデータを表示します。今私はそれを保存する外部クラスに送信する前にユーザーの入力を待つ必要がある、それの解析部分を実装しています。
コードを表示する必要があります。それで、あなたは許しを求める必要はありません。 –
spinner onItemSelectedリスナーを実装しましたか? – Deepesh
"onItemSelected"リスナーの使い方を理解していますが、そのような選択が行われるまでスクリプトの作業を続行できないようにする方法はわかりません。また、このスピンナーは常に表示されるとは限りません。つまり、そのようなリスナーに含まれるすべてのものは、必要な変数を設定して作業を続ける何らかの「続行」コマンドです。 –