getWidth должен вызываться из потока пользовательского интерфейса. Как я его исправить? Я пытаюсь создать файл pdf .. но getWidth, getHeight и getCanvas появляются ошибки !!!getWidth должен вызываться из потока пользовательского интерфейса
private class PdfGenerationTask extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... params) {
PdfDocument document = new PdfDocument();
// repaint the user's text into the page
View content = findViewById(R.id.pdf_content);
// crate a page description
int pageNumber = 1;
PageInfo pageInfo = new PageInfo.Builder(content.getWidth(),
content.getHeight() - 20, pageNumber).create();
// create a new page from the PageInfo
Page page = document.startPage(pageInfo);
content.draw(page.getCanvas());
// do final processing of the page
document.finishPage(page);
SimpleDateFormat sdf = new SimpleDateFormat("ddMMyyyyhhmmss");
String pdfName = "pdfdemo"
+ sdf.format(Calendar.getInstance().getTime()) + ".pdf";
File outputFile = new File("/sdcard/PDFDemo_AndroidSRC/", pdfName);
try {
outputFile.createNewFile();
OutputStream out = new FileOutputStream(outputFile);
document.writeTo(out);
document.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
return outputFile.getPath();
}
Вы не можете позвонить GetWidth из ниток (в вашем случае doInBackground), вы можете скорее сохранить ширину в методе preExecute и использовать его в doInBackground – user2582324