我的应用程序将原始文件夹中的文件复制到代码中写入的分配位置,我想要做的是显示一条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 :(得分:0)
您可以使用Handler类,在线程末尾调用处理程序。
但是personnaly我会选择AsyncTask类。 此类允许您处理线程,并且在完成线程后,您可以对UI进行更改。
在Android开发者网站上阅读。
答案 1 :(得分:0)
您可以在代码中使用处理程序来执行此操作。
你应该将消息传递给你需要在OS上显示的处理程序......如下所示......
Message message = Message.obtain();
message.what = 1; // success message
mHandler.sendMessage(message);
&安培;根据该消息显示处理程序中的Toast ......
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:
}
}
}
答案 2 :(得分: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)
{
}
{