2012-09-13 65 views
-1

我的应用程序在下面将原始文件夹中的文件复制到代码中写入的分配位置,我想要做的是显示Toast消息,指出文件是否已成功写入或者是否失败了。显示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

您可以在代码中使用处理程序来完成此操作。

你应该传递给处理程序中需要显示在OS ....像下面什么消息?

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

&显示吐司基于该邮件处理程序...

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

你的情况,你需要通过成功的消息处理程序时您的文件复制苏当有任何异常发生时......并通过错误信息...... –

+0

非常感谢你的帮助很多,我一直在寻找这个解决方案,欢呼声“Priyank” – user1305471

+0

是的,当然不用担心,只有一个问题我保留得到“mHandler无法解决”? – user1305471

0

您可以使用Handler类的工作,叫在你的线程结束的处理程序。

但是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) 
     { 

     } 

    { 
相关问题