2014-03-06 2 views
0

나는 정말 정말 새로워서 너무 열심히 웃지 않는다. ... 또는 너무 비밀스럽게 이야기한다 ... 나는 검색하고 실험하고 등을 검색했다 ... 나는 배우고있다. , 그러나 나는 또한 혼란스러워지고있다!루프가 의도 한 결과를 기다린다. (Java Android)

나는 sdcard의 폴더를 반복하여 각 안드로이드 응용 프로그램에서/프린터를 성공적으로 처리 한 후에 하나씩 안드로이드 인 텐트를 통해 해당 폴더의 .html 파일의 각 인스턴스를 하나씩 보내야합니다. Let 's Print Droid (네트워크 연결 프린터를위한 훌륭한 인쇄 응용 프로그램). 이 응용 프로그램은 하나의 파일 만 받아 들일 수 있습니다. 파일을 처리 한 다음 프린터로 보내면 인 텐트를 통해 좋은 결과가 반환됩니다.

다양한 수면 옵션을 시도했습니다. (나쁜 습관을 알고 있습니다!) 기다리고 알림 (더 잘 믿겠습니까?)하지만 첫 번째 발견 또는 마지막 파일 (내 코드에 따라) 이상으로 인쇄 할 수 없습니다. !)

다음은 내 코드의 한 버전입니다. 이 버전은 "Lets Print Driod"앱을 통해 처리하는 첫 번째 파일을 전송 한 다음 내 Toast 메시지 "Waiting loop number ->"를 표시하면서 루프를 계속합니다.

누구나 내 루프에서 의도 결과를 받으면 알림을 사용하고 알리는 올바른 방법을 보여줄 수 있습니까?

도움을 주셔서 감사합니다.

package com.my.test; 

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.Menu; 
import android.widget.Toast; 

public class MainActivity extends Activity { 
    String received_results_from_LPD = "YES"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     try { 
      print_all_html(); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 


    public synchronized void print_all_html() throws InterruptedException { 
     received_results_from_LPD = "YES"; 

     for(int x = 1; x < 6; x = x+1) { 
     if (received_results_from_LPD == "YES") { 
     Intent i = new Intent(Intent.ACTION_VIEW); 
     i.setClassName("com.blackspruce.lpd","com.blackspruce.lpd.WebPrint"); 
     i.setData(Uri.parse("file:///storage/emulated/0/Pictures/test" + x + ".html")); 
     Toast.makeText(getApplicationContext(), "Loop Position " + x, Toast.LENGTH_SHORT).show(); 
     Toast.makeText(getApplicationContext(), "Value of LPD " + received_results_from_LPD, Toast.LENGTH_SHORT).show(); 
     Toast.makeText(getApplicationContext(), "Printing " + "test" + x + ".html", Toast.LENGTH_SHORT).show(); 
     received_results_from_LPD = "NO"; //reset for next time 
     startActivityForResult(i, 99); 
     //wait(); 
     } 
     else Toast.makeText(getApplicationContext(), "Waiting loop number --> " + x, Toast.LENGTH_SHORT).show(); 
     received_results_from_LPD = "NO"; 
     Thread.sleep(1000); 
     } 
    } 



    @Override 
    protected synchronized void onActivityResult(int requestCode, int resultCode, Intent data) { 
        // TODO Auto-generated method stub 
        super.onActivityResult(requestCode, resultCode, data); 
    if (data != null && requestCode == 99 && resultCode == RESULT_OK) { 
     //successful 
     Toast.makeText(getApplicationContext(), "Sucessfull", Toast.LENGTH_SHORT).show(); 
     received_results_from_LPD = "YES"; 
     //notify(); 
    } 
    else { 
     //not successful 
     Toast.makeText(getApplicationContext(), "oopps!!!!", Toast.LENGTH_SHORT).show(); 
     received_results_from_LPD = "YES"; 
     //notify(); 
     } 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

일종의 고정 ... 일격을 했나요?!? 정확히 내가 원하는 것은 아니지만 Java를 더 잘 이해할 때까지 당분간 인쇄합니다!

+0

음, 보류중인 파일 목록을 유지하고 onActivityResult에서 다음 파일을 발급 할 수 있습니다. – usethe4ce

+0

기본적으로 루프를 뒤집어 야합니다. 프로그램 흐름을 "구동하는"루프 대신 프로그램 흐름이 이벤트 메서드를 통해 코드를 입력 할 때마다 수행 할 작업을 결정해야하는 루프가 필요합니다. –

답변

0

코드가 '나쁘지'않은 것은 시작 활동이 차단되어 있지 않으므로 루프를 반복 할 수 없다는 것입니다. onActivityResult에서 처리 할 데이터가 여전히있는 경우 for를 삭제하고 테스트합니다.

관련 문제