Java 如何在Android的doInBackground中调用onPostExecute()中的void方法?
我正在Android中实现PowerPoint到JPEG。我必须使用Java 如何在Android的doInBackground中调用onPostExecute()中的void方法?,java,android,Java,Android,我正在Android中实现PowerPoint到JPEG。我必须使用AsychTask和doINBackground。但是我不知道如何在onPostExecute()方法中调用我的文档类中的saveSlideAs的void方法 这是我的密码: SaveSlideAs() this method in Document Class public void saveSlideAs(String outputPath, int slideNumber, Imag
AsychTask
和doINBackground
。但是我不知道如何在onPostExecute()
方法中调用我的文档类中的saveSlideAs
的void方法
这是我的密码:
SaveSlideAs() this method in Document Class
public void saveSlideAs(String outputPath, int slideNumber,
ImageFormat imageFormat)// Returns 100x100 image
{
try {
String strURI = Product.getBaseProductUri() + "/slides/"
+ fileName + "/slides/" +
Integer.toString(slideNumber) + "?format=imageFormat.toString().toLowerCase();
String signedURI = Utils.sign(strURI);
InputStream responseStream = Utils.processCommand(signedURI,"GET");
Folder.saveStreamToFile(outputPath,responseStream);
responseStream.close();
}
catch (Exception e) {
logger.error(e.getMessage());
}
}
doInBackground() method in StorageFolderUploadFile class
private void convertToImage()
{
httpGetAsynchTask httpGetAsyncTask = new httpGetAsynchTask();
httpGetAsyncTask.execute();
}
class httpGetAsynchTask extends AsyncTask<String , Integer , Object>
{
protected void onPreExecute()
{
try
{
dialog.setMessage("Please Wait");
dialog.show();
}
catch(Exception e)
{
}
}
protected String doInBackground(String... arg0)
{
// TODO Auto-generated method stub
Folder obj = new Folder();
try
{
response = obj.uploadFile(path);
Log.e("response ",": "+response);
if (response)
{
Document docObj=new Document( fileName);
count = docObj.getSlideCount();
if (count > 0)
{
for(int i=1; i <= count ; i++)
{
String outputPath = fileName + "_Slide" + i + ".jpg" ;
slideNumber = i;
Document docObj2=new Document(fileName);
docObj2.saveSlideAs(outputPath.toString().trim(), slideNumber, imageFormat);
}
}
}
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
Log.e("",""+e.toString());
}
return null;
}
public void onPostExecute(String values)
{
try
{
if (response)
{
//here result is a text view
result.append("File Uploaded Successfully \n" + count);
if(dialog.isShowing())
{
dialog.dismiss();
}
}
else
{
result.append("Oops..Something went wrong");
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
button click event
btnSubmit.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View arg0)
{
// TODO Auto-generated method stub
convertToImage();
}
});
SaveSlideAs()在文档类中使用此方法
public void saveslidea(字符串输出路径,int slideNumber,
ImageFormat ImageFormat)//返回100x100图像
{
试一试{
字符串strURI=Product.getBaseProductUri()+“/slides/”
+文件名+“/slides/”+
Integer.toString(slideNumber)+“?format=imageFormat.toString().toLowerCase();
字符串signedURI=Utils.sign(strURI);
InputStream responseStream=Utils.processCommand(signedURI,“GET”);
文件夹.saveStreamToFile(outputPath,responseStream);
responseStream.close();
}
捕获(例外e){
logger.error(例如getMessage());
}
}
StorageFolderUploadFile类中的doInBackground()方法
私有void convertToImage()
{
httpGetAsynchTask httpGetAsynchTask=新建httpGetAsynchTask();
httpGetAsyncTask.execute();
}
类httpGetAsynchTask扩展了AsyncTask
{
受保护的void onPreExecute()
{
尝试
{
setMessage(“请稍候”);
dialog.show();
}
捕获(例外e)
{
}
}
受保护的字符串doInBackground(字符串…arg0)
{
//TODO自动生成的方法存根
Folder obj=新文件夹();
尝试
{
response=obj.uploadFile(路径);
Log.e(“响应”,“:”+响应);
如果(答复)
{
Document docObj=新文档(文件名);
count=docObj.getSlideCount();
如果(计数>0)
{
对于(inti=1;i,您可以使用这种符号从内部类访问外部类的实例:
public class Main {
public static void main(String[] args) {
Main main = new Main();
}
public void doThisInsideTheInnerClass() {
System.out.println("Hi there!");
}
public Main() {
class Inside {
public void insideVoid() {
Main.this.doThisInsideTheInnerClass();
}
}
Inside object = new Inside();
object.insideVoid();
}
}
因此,如果外部类的名称是outer
,请使用outer.this.saveSlideAs(…)
使用:private static void convertToImage()而不是private void convertToImage()。请编辑您的源代码,因为使用所有这些空行和混合的意图样式很难阅读。。。