2012-09-13 4 views
-1

아래의 내 앱은 원시 폴더에서 코드에 기록 된 할당 된 위치로 파일을 복사합니다. 원하는 작업은 파일이 성공적으로 작성되었는지 또는 파일이 성공적으로 작성되었는지 여부를 나타내는 축배 메시지를 표시하는 것입니다. 실패했다.Android Toast 성공/실패 메시지 표시

필요한 코드는 무엇이며 어디에서 기존 코드에 건배 할 것인가?

public class TrialActivity extends Activity { 

private ProgressDialog progressDialog; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    runDialog(5); 
} 

private void runDialog(final int seconds) 
{ 
    progressDialog = ProgressDialog.show(this, "Please Wait...", "unpacking patch in progress"); 

    new Thread(new Runnable(){ 
     public void run(){ 
      try { 
       Thread.sleep(seconds * 1000); 
       progressDialog.dismiss(); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    }).start(); 

    ((Button)findViewById(R.id.button1)).setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View paramView) 
     { 

     } 

    { 

       InputStream in = null; 
       OutputStream out = null; 
    String filename="savegame.bin";   
    try {  

       in = getResources().openRawResource(R.raw.savegame); 
       out = new FileOutputStream("/sdcard/Android/data/com.glu.android.brawler/files/" + filename); 
       copyFile(in, out); 
       in.close(); 
       in = null; 
       out.flush(); 
       out.close(); 
       out = null; 
       } catch(Exception e) { 
        Log.e("tag", e.getMessage()); 
        Message message = Message.obtain();  
        message.what = 1;    
        mHandler.sendMessage(message); 
       }  

     } 
     private void copyFile(InputStream in, OutputStream out) throws IOException { 
      byte[] buffer = new byte[1024]; 
      int read; 
      while((read = in.read(buffer)) != -1){ 
      out.write(buffer, 0, read); 

      Handler mHandler = new Handler() { 
       public void handleMessage(Message msg) 
       { 
        Toast toast; 
         switch(msg.what) 
         {   
          case 1: // for success 
           toast = Toast.makeText(getBaseContext(), "File has been successfully written.", Toast.LENGTH_LONG); 
           toast.show(); 
          break; 
          case 0: // for Error 
           toast = Toast.makeText(getBaseContext(), "Error occur during writting file.", Toast.LENGTH_LONG); 
           toast.show(); 
          break; 

         } 
       }; 
      }; 

      } 
     } 
     } 
    ); 


} 

}

답변

0

코드에서 처리기을 사용하여이 작업을 수행 할 수 있습니다.

당신은 ... 그 메시지에 따라 처리기에 ...

Message message = Message.obtain();  
message.what = 1; // success message    
mHandler.sendMessage(message); 

& 쇼 토스트를 당신이 .... OS에 표시 아래와 같이 할 필요 처리기에 메시지를 전달해야

Handler mHandler = new Handler() { 
    public void handleMessage(Message msg) 
    { 
     Toast toast; 
      switch(msg.what) 
      {   
       case 1: // for success 
        toast = Toast.makeText(getBaseContext(), "File has been successfully written.", Toast.LENGTH_LONG); 
        toast.show(); 
       break; 
       case 0: // for Error 
        toast = Toast.makeText(getBaseContext(), "Error occur during writting file.", Toast.LENGTH_LONG); 
        toast.show(); 
       break: 

      } 
    } 

} 귀하의 경우에는

+0

당신은 당신의 파일이 스와 복사 할 때 처리기에 성공 메시지를 전달해야 ccessfully ... 예외가 발생할 때 오류 메시지를 전달합니다 .... –

+0

많은 도움을 주신 것에 대해 대단히 감사합니다.이 솔루션 환성 "Priyank"를 찾고있었습니다 – user1305471

+0

확실한 걱정은 없습니다. "mHandler를 해결할 수 없습니까?" – user1305471

0

당신은 당신의 스레드의 끝에 처리기를 호출 핸들러 클래스로 작업 할 수 있습니다.

하지만 personnaly 나는 AsyncTask 클래스를 선택합니다. 이 클래스를 사용하면 스레드에서 작업 할 수 있으며 스레드가 완료된 후에 UI를 변경할 수 있습니다.

Android 개발자 웹 사이트에서 확인하십시오.

0
private void runDialog(final int seconds) 
{ 
    progressDialog = ProgressDialog.show(this, "Please Wait...", "patch is being prepared"); 

    new Thread(new Runnable(){ 
     public void run(){ 
      try { 
       Thread.sleep(seconds * 1000); 
       progressDialog.dismiss(); 
         runOnUiThread(new Runnable() { 
        public void run() { 
           Toast.makeText(ActivityName.this,"Message",Toast.LENGTH_SHORT).show(); 
                }}); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    }).start(); 

    ((Button)findViewById(R.id.button1)).setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View paramView) 
     { 

     } 

    {