2009-07-14 11 views
11

私は、Androidの進捗ダイアログやスピナーにキャンセルボタンがないことに気づいたときに、this person(2008年1月以降)のような頭が痛む瞬間に直面しています。 2009年7月になって、ちょうどAndroidのカップケーキ版がインストールされました。このことは変わったのですか?そうでない場合は、ダイアログにキャンセルボタンを追加していますか?どうしますか?Androidの進行状況ダイアログにキャンセルボタンが表示されないのはなぜですか?

答えて

11

私はAndroidのユーザーも開発者もいませんが、リンク先のスレッドの答えはかなりまともです:ハードウェアすべてのAndroidデバイスに「戻る」キーがあります。ユーザは、彼らが現在行っている活動をバックに戻すことを知っているはずです。

したがって、GUIの戻る/キャンセルボタンを含める必要はありません。これは、DRY原則のUIアプリケーションと見ることができます。既に何かをする一つの方法があれば、それで十分です。

+1

従来、UIでは、同じタスクを達成するために複数の冗長な方法を提供することが一般的には考えられました。彼らがそれをした理由なら、面白いアプローチ。 –

+3

私の意見では、BACKボタンはブラウザの戻るボタンと同義です。私を直感的に(私のオフィスの技術者さえも)直感的なことではなく、押し返してダイアログを破棄します。 –

+0

次に、ダイアログが閉じるのを待つか、スピナーで既に選択されている項目を選択するだけです。一般的に、進行状況ダイアログボックスをバックアウトしても、アプリケーションはスレッド内で長時間実行されているプロセスを実行する必要があるため、アクションをキャンセルしません。ダイアログが閉じられることを望んでいない限り、プロセスは関係なくいつでも完了します。 –

2

ここでの答えはハードウェアキーです。私はDRYの原則をUIに一般化することに注意したいと思います。あなたがハンマー、ハンマー、見出し、本文テキスト、色と画像を介して繰り返し同じポイントをユーザーにハンマーする必要がある場合はたくさんあります。

ユーザーは、あなたが小説を読んでいるようにUIを「読む」ことはできません。彼らは読み取りをスキャンします。

1

私は他のアプリを話すことはできませんが、UIスレッドを待機させる可能性のあるものは別のスレッドで実行されます。私がやることは、タイトルバーに小さな進行スピナーを表示して、バックグラウンドで何かが起こっていることをユーザーに知らせることです。

16

キャンセルボタン全体についてわからない... onCancel()メソッドのレポートが正常に起動しないと聞いたことがあります。私のソリューションは、ボタンが押されるたびに戻るように呼び出され、ダイアログの通常のボタンを作ることから成り立っています。

private void createCancelProgressDialog(String title, String message, String buttonText) 
{ 
    cancelDialog = new ProgressDialog(this); 
    cancelDialog.setTitle(title); 
    cancelDialog.setMessage(message); 
    cancelDialog.setButton(buttonText, new DialogInterface.OnClickListener() 
    { 
     public void onClick(DialogInterface dialog, int which) 
     { 
      // Use either finish() or return() to either close the activity or just the dialog 
      return; 
     } 
    }); 
    cancelDialog.show(); 
} 

はその後、ちょうどあなたの活動

createCancelProgressDialog("Loading", "Please wait while activity is loading", "Cancel"); 

かなりシンプルなソリューションの他の場所から、単純な呼び出しメソッドを使用しますが、それはトリックを行い、変数を拭くcancelDialogが活動であることに注意するだけでも) を、他の場所から呼び出す必要がない場合は、そのメソッドの変数の範囲を制限するだけで済むはずです。

0

Androidユーザーと開発者として、私の意見では、プラットフォームの理解に基づいて、キャンセルのない進捗ダイアログでキャンセルボタンをデフォルトでは持たないのが良い理由があると言えます。

開発者は、これらのダイアログをデフォルトでキャンセルすることはできません。つまり、明示的にキャンセル可能に設定する必要があります。

この目的は、ユーザーがUIスレッドを介して、UIスレッドの更新にとって重要な作業が他の場所で行われていることをユーザーに警告することです。

たとえば、空の画面を占有するデータのリストを取得する場合、対話するものは何もなく、ユーザーは何かが起こっていることを意識する必要があり、対話するために利用できるものがないと予想する必要がありますこのプロセスが完了するまで。

ただし、インターネットからのデータ検索などのプロセスが「スケッチ」であり、接続の問題によりリクエストを完了できない場合があります。

これは開発時にダイアログをキャンセルできるようにする場所です。

AndroidのUIパラダイムをはっきりと理解しているユーザーとして、以前の操作に戻ったり、現在の操作をキャンセルしたい場合は、戻るキーを押してください。

ユーザーは、Androidのメニューキーで隠されたオプションが表示されることはよくありますが、外見上空白の画面では対話できないことがあります。

これはユーザーが期待する動作であり、プラットフォームの設計方法です。キャンセルボタンを追加することはできますが、電話を理解しているユーザーの視点からは違いはありません。バックキーは、この目的のために意図された選択です。

アクティビティとUIにはフローがあり、アクティビティとUIの「画面」を「スタック」し、バックボタンはスタックの最後のものを本質的に「ポップ」して以前の場所に戻します。これらのアクティビティの別のものとしてダイアログが表示されている場合は、スタックの一番上からポップアップして、下にあるものまたはその前のアクティビティに戻したいとします。

バックグラウンドで取り消すことができないダイアログが開発者にあった場合、それは設計上、場合によっては非常に正当な理由であるか、開発の見通しが悪く、 devloperの部分。

関連する問題