2011-06-17 9 views
1

私は警告ダイアログをポップして、パスワードを入力してから送信するかキャンセルするかを選択できますボタンをクリックします)。現在、ログイン(Pos選択)をクリックすると、入力した内容に関係なく、次のページに送信されます。 (下に貼り付けられたコード)。Android - edittext値をバックグラウンドプロセスに渡して、一度終了したら新しいアクティビティを開始する方法

私が変更に助けが必要なのは、edittextから取得したパスワードを実際にassetsフォルダにあるxmlファイルを解読するアクティビティに送りたいのですか?キャプチャされたパスワードが暗号化の鍵です。誰かが私のコードを変更する方法について私に助けてくれますか?

a)パスワードを取得して解読機構に送ります(これはonActivityResultで行われますか?) b)背景(私はプログレスバーやローダで推測しますか?Androidでスレッディングを行うのは本当に初心者です) c)XMLが解読されたら、今度は自分のコードが解読されたxmlをメモリに読み込める新しいアクティビティに渡します。

何か助けていただければ幸いです。

.setPositiveButton( "ログイン"、新DialogInterface.OnClickListener(){ ます。public void onClickの(DialogInterfaceダイアログ、whichButtonをint型){

     Intent openBrowsePage = new Intent(); 
         openBrowsePage .setClassName("com.myproject.android", "com.myproject.android.BrowsePage"); 
         startActivity(openBrowsePage); 

        } 
       }) 

答えて

1

これはAsyncTaskの古典的な仕事です。 documentation

AsyncTaskは、UIスレッドの適切で使いやすい を有効にします。このクラスにより、 はバックグラウンド操作を実行し、 UIスレッド に結果を公開することができ、スレッド および/またはハンドラを操作する必要はありません。

これには別のアクティビティやサービスは必要ありません。

Asynctaskドキュメントは、いくつかのサンプルコードを持っていますが、要するに、あなたはAsyncTaskから継承し、(バックグラウンドスレッドで実行することが保証)バックグラウンドものを行うためのdoInBackgroundメソッドをオーバーライドします。この方法の中からpublishProgressに電話して、バックグラウンド操作で進んだことを示すこともできます。次に、このメソッド(あなたの場合はXMLバッファ)から計算結果を返します。

OnProgressUpdateを無効にして、それに応じてProgressBarを更新したい場合があります。このメソッドは、publishProgressバックグラウンドメソッド呼び出しに対応してUIスレッドで実行されます。

また、メインスレッドでバックグラウンド処理が完了した後に実行されることが保証されているonPostExecuteMethodを上書きすることもできます。このメソッドのパラメータとしてdoInBackgroundという結果が得られます。

このAPIは、レベル3(android 1.5)以上で使用できます。

0

あなたが背景を行うために活動するのではなく、サービスを使用する必要がありますあなたはサービスを開始するために使用するインテントで、EditTextから取得したパスワードを追加としてサービスに追加することができます。

これを行う最も簡単な方法はIntentServiceを拡張し、を使用してボタンリスナのサービスを呼び出します。暗号化の終わりに、startActivityを使用して新しいアクティビティを呼び出します。

編集:私は私の答えを明らかにする必要があります。 Roryが正しい - AsyncTaskはアクティビティ内のバックグラウンドタスクに使用する必要があります。バックグラウンドタスクがAsyncTaskまたはServiceを使用するかどうかを区別する方法は、アクティビティを終了する場合にタスクを実行する必要があるかどうかによって異なります。たとえば、アクティビティのバックグラウンドでファイルのダウンロードを開始し、アクティビティを終了してもダウンロードを続行したい場合は、サービスを使用する必要があります。一方、あなたのアクティビティに表示される現在のWiFi信号強度を公開するのがバックグラウンドタスクの場合は、AsyncTaskを使用します。

関連する問題