2013-06-17 4 views
0

Android에서 JPEG의 파워 포인트를 구현하고 있습니다. AsychTaskdoINBackground을 사용해야합니다. 하지만 내 saveSlideAs의 내 무효 메서드를 onPostExecute() 메서드의 내 문서 클래스에서 이해하는 방법을 알지 못합니다. 당신과 같은 this 표기와 내부 클래스 내에서 외부 클래스의 인스턴스에 액세스 할 수 있습니다안드로이드에서 doInBackground의 onPostExecute()에서 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(); 

       } 

      }); 
+0

사용 : 모든 빈 라인과 혼합 의도 스타일을 읽기 매우 어렵 기 때문에 개인 정적 무효 convertToImage() 대신 의 개인 무효 convertToImage() – user1283633

+3

소스 코드를 수정하십시오 ... –

답변

0

: 여기

내 코드입니다

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(...)을 사용하십시오.

관련 문제