2014-04-09 5 views
0

을 사용하여 한 편집 텍스트의 텍스트를 다른 텍스트로 전송하는 동안 ProgressDialog을 추가하려고합니다. 누구든지 코드를 도와 줄 수 있습니까?AsyncTask의 ProgressDialog

AsyncTask을 사용해야하는 이유에 대해서도 설명 할 수 있습니까? 그리고 본질적으로 처리기를 사용하여 진행 상황을 업데이트해야합니까?

는 activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/RelativeLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:ems="10" 
     android:hint="Enter Text.." > 

     <requestFocus /> 
    </EditText> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/editText1" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="82dp" 
     android:text="Transfer" /> 

    <EditText 
     android:id="@+id/editText2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="114dp" 
     android:ems="10" 
     android:hint="Received Text.." /> 

    </RelativeLayout> 

MainActivity.java

package com.example.progressbar; 

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class MainActivity extends Activity { 
    Button btn; 
    EditText et1, et2; 
    String sent; 
    ProgressDialog progress; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     progress = new ProgressDialog(MainActivity.this); 

     et1 = (EditText) findViewById(R.id.editText1); 
     et2 = (EditText) findViewById(R.id.editText2); 

     sent = et1.getText().toString(); 

     btn = (Button) findViewById(R.id.button1); 
     btn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View view) { 

       TransferText tt = new TransferText(); 
       tt.execute(sent); 
      } 
     }); 

    } 

    class TransferText extends AsyncTask<String, String, String> { 

     @Override 
     protected void onPreExecute() { 
      progress = new ProgressDialog(MainActivity.this); 
      progress.setTitle("Transferring..."); 
      progress.setMessage("Please wait."); 
      progress.setCancelable(false); 
      progress.setIndeterminate(true); 
      progress.show(); 
     } 

     @Override 
     protected String doInBackground(String... params) { 
      // TODO Auto-generated method stub 
      String result = sent; 
      final int time = 100; 
      Thread t = new Thread() { 

       @Override 
       public void run() { 
        Toast.makeText(getApplicationContext(), "Transferring", 
          Toast.LENGTH_SHORT).show(); 
        int i = 0; 
        while (i < time) { 
         try { 
          sleep(50); 
          i += 5; 
          progress.setProgress(i); 
         } catch (InterruptedException e) { 
          e.printStackTrace(); 
         } 
        } 
       } 
      }; 

      t.start(); 

      return result; 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      et2.setText(result); 
     } 

    } 
} 

나는 전송이 백그라운드에서 수행하고 그 사이에 진행 표시 줄을 표시하려면 정면. 진행률 표시 줄이 100 %에 도달하면 전송이 완료되어야합니다.

+2

텍스트를 전송하려면 asynctask가 필요하지 않습니다. – Raghunandan

+0

AsyncTask에 대해 알고 싶다면이 [link] (http://developer.android.com/reference/android/os/AsyncTask.html)을 확인하십시오. AsyncTask를 사용하여 텍스트를 변환하십시오. –

답변

1

한 EditText에서 다른 EditText로 텍스트를 이동하려면 ASyncTask를 사용해서는 안됩니다. 이 후

:

et2.setText(sent); 

하거나이 : 당신은 하나의 텍스트를 편집 텍스트를 전송하는 비동기 클래스를 사용할 필요가없는

et2.setText(et1.getText().toString()); 
+1

@Rethinavel 기능을 변경하여 게시물을 수정하지 말고 답변 작성자에게 직접 알려주십시오. – Alex

+0

@Alex 앞으로 계속하겠습니다. 죄송합니다. :-( –

+0

AsynTask를 사용하여 텍스트를 전송할 필요가 없습니다.하지만 텍스트 전송과 동기화 된 진행률 대화 상자 (실제 %로 표시)를 사용하려면 – user3505180

0

sent = et1.getText().toString(); 

이렇게 다른. 만약 당신이 텍스트를 동시에 보내고 싶다면, 텍스트 워처를 사용할 수 있습니다.

+0

AsynTask를 사용하여 텍스트를 전송할 필요는 없지만 텍스트 전송과 동기화 된 진행률 대화 상자 (실제 %로)를 표시하려면 다음을 수행해야합니다. – user3505180