0

こんにちは、私はダウンロードとアップロードに使用されるアクティビティを作成しました。私はメニュー(項目:ダウンロード、アップロード、削除、終了)を使用しています。しかし、私がダウンロードボタンを押すと、ダウンロード作業が始まりますが、このタスクが完了するまでメニューボタンは消えません。ユーザーには何の通知もせずにイライラします。メニューを押した直後にメニューを非表示にする方法と、ダウンロードとアップロードのタスクに関するユーザーに通知する進行状況バーを含める方法。ダウンロードするためメニューが隠れて、アンドロイドに進行状況バーが表示されます

void downloadFile(SmbFile file,String desPath) 
void downloadFolder(SmbFile folder,String tempStore) 
void uploadFile(File file,SmbFile destination) 
void uploadFolder(File f,SmbFile destination) 

非同期タスクを拡張して、以下のコードでこれらのメソッドを追加する方法を教えてください...

class helper extends AsyncTask 
{ 

@Override 
protected Object doInBackground(Object... arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 

} 
+0

タスクをダウンロードしてアップロードするには、スレッドまたはAsynctaskを使用してください。だからあなたのUIをハングアップすることはできません。 –

+0

pls私の編集した質問を参照 – ram

答えて

1

あなたはコンストラクタを使用できるようにあなたは、2差型パラメータを使用しているため(またはゲッターを使用し、あなたが渡したいパラメータのsetter):

public class Helper extends AsyncTask<Integer, Void, Void> { 

//The filed you want to pass 
private SmbFile file; 
private String desPath; 
private SmbFile folder; 
private String tempStore; 
private File file; 
private SmbFile destination; 

//Create setter 

public void setFile(SmbFile file) { 
    this.file = file; 
} 

public void setDesPath(String desPath) { 
    this.desPath = desPath; 
} 

public void setFolder(SmbFile folder) { 
    this.folder = folder; 
} 

public void setTempStore(String tempStore) { 
    this.tempStore = tempStore; 
} 

public void setFile(File file) { 
    this.file = file; 
} 


public void setDestination(SmbFile destination) { 
    this.destination = destination; 
} 


@Override 
protected Void doInBackground(Integer... params) { 
    //check flag to excute exactly method 
    switch (params[0]) { 
    case 0: 
        //Call your download file method 
     downloadFile(file,desPath); 
     break; 
    case 1: 
        //Call your download folder method 
     downloadFolder(folder,tempStore); 
    //etc... 
    default: 
     break; 
    } 
    return null; 
} 

}

ダウンロードメニューがされます

//Download the file 
Helper helper = new Helper(); 
//set file and des path for download file 
helper.setFile(your_file); 
helper.setDesPath(your_despath); 
//Excute the download file method 
helper.excute(0); 

//Download the folder 
//set file and des path for download file 
helper.setFolder(your_folder); 
helper.setTempStore(your_tempStore); 
//Excute the download folder method 
helper.excute(1); 

//etc... 

:アンダーに慎重this linkお読みください押され、あなたは非同期タスクを呼び出すことができますAsyncTaskを使用する方法。

+0

この行を説明することができますか?AsyncTask ? – ram

+0

そして、私はアンドロイドに新しいです。plsは別の4つの関数を追加してコードを精巧にできますか? – ram

+0

@ram私は自分の答えを更新しました。チェックしてください。 – R4j

0

は、私はあなたのあなたのUIがブロックされていると思う:

こんにちは、私はメソッドを持っていますUIスレッドで発生します。ダウンロードプロセスをバックグラウンドスレッドに移動します。あなたの問題を解決します。

+0

私の編集した質問を参照してください.. – ram

関連する問題