2013-01-08 38 views
0

我剛剛兩天才開始使用android開發,我想通過以pdf格式顯示數據庫來檢索數據。我之前在netbeans(工作過)上做過這個,但是當我在android中嘗試我的代碼時,它給了我一個錯誤。我有觸發我的btnPdf的動作的SQLitExample.java文件和創建我的pdf的createPDF.java文件。我嘗試通過創建一個新的intent來調用createPDF.java文件。但是當我點擊我的btnPdf它給我這個錯誤:如何在android中使用itext生成pdf

dalvikvm(6097): Could not find class 'com.example.hotornot.createPDF$1', referenced from method com.example.hotornot.createPDF.pdf

這是我在SQLitExample.java

package com.example.hotornot; 

import java.io.IOException; 
import java.sql.SQLException; 

import com.lowagie.text.DocumentException; 

import android.app.Activity; 
import android.app.Dialog; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class SQLitExample extends Activity implements OnClickListener { 

Button btnUpdate, btnView, btnPdf; 
EditText SQLName,SQLNum; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.sqliteexample); 
    btnUpdate = (Button) findViewById(R.id.btnUpdate); 
    SQLName = (EditText) findViewById(R.id.etSQLName); 
    SQLNum = (EditText) findViewById(R.id.etSQLNum); 

    btnView = (Button) findViewById(R.id.btnView); 
    btnPdf = (Button) findViewById(R.id.btnPdf); 
    btnPdf.setOnClickListener(this);   
    btnView.setOnClickListener(this); 
    btnUpdate.setOnClickListener(this); 
} 


public void onClick(View arg0){ 
    switch (arg0.getId()) 
    { 
    case R.id.btnUpdate: 
     boolean diditwork = true; 
     try{ 
     String name = SQLName.getText().toString(); 
     String num = SQLNum.getText().toString(); 

     Example entry = new Example(SQLitExample.this); 
     entry.open(); 
     entry.createEntry(name,num); 
     entry.close(); 

     }catch(Exception e){ 
      diditwork = false; 
      String error = e.toString(); 
      Dialog d = new Dialog(this); 
      d.setTitle("OW men! :("); 
      TextView tv = new TextView(this); 
      tv.setText(error); 
      d.setContentView(tv); 
      d.show(); 
     }finally{ 
      if(diditwork){ 
       Dialog d = new Dialog(this); 
       d.setTitle("yehey"); 
       TextView tv = new TextView(this); 
       tv.setText("Success"); 
       d.setContentView(tv); 
       d.show();  
      } 
     } 
    break; 

    case R.id.btnView: 
     Intent i = new Intent("com.example.hotornot.SQLView"); 
     startActivity(i); 
    break; 

    case R.id.btnPdf:  
     Intent i2 = new Intent("com.example.hotornot.createPDF"); 
     startActivity(i2); 
    break; 
    } 
} 
} 

這裏的代碼我createPDF.java代碼:

package com.example.hotornot; 

import java.io.FileOutputStream; 
import java.io.IOException; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

import android.app.Activity; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.widget.TextView; 

import com.lowagie.text.Cell; 
import com.lowagie.text.Document; 
import com.lowagie.text.DocumentException; 
import com.lowagie.text.Element; 
import com.lowagie.text.Font; 
import com.lowagie.text.FontFactory; 
import com.lowagie.text.Paragraph; 
import com.lowagie.text.Table; 
import com.lowagie.text.pdf.PdfPCell; 
import com.lowagie.text.pdf.PdfPTable; 
import com.lowagie.text.pdf.PdfWriter; 
import com.example.hotornot.*; 
import com.example.hotornot.Example.DbHelper; 

public class createPDF extends Activity { 

String DATABASE_NAME = Example.DATABASE_NAME; 
String DATABASE_TABLE = Example.DATABASE_TABLE; 
String KEY_NAME = Example.KEY_NAME; 
String KEY_NUM = Example.KEY_NUM; 
String KEY_ROWID = Example.KEY_ROWID; 

public void pdf() throws ClassNotFoundException, SQLException, DocumentException{ 

    try { 

     System.out.println("THIS SHOULD CREATE PDF!"); 
     Document document=new Document() {}; 
     PdfWriter.getInstance(document,new FileOutputStream("C:/Users/SERVER02/workspace/HotOrNot/samplePDF")); 
     document.open(); 

     PdfPTable table = new PdfPTable(3); 
     table.addCell("Row_Id"); 
     table.addCell("Name"); 
     table.addCell("Number"); 

     String[] columns = new String[]{ KEY_ROWID,KEY_NAME, KEY_NUM}; 

     Example entry = new Example(createPDF.this); 
     Cursor c = entry.ourdatabase.query(DATABASE_TABLE, columns, null, null, null, null, null); 
     String result = ""; 

     int iRow = c.getColumnIndex(KEY_ROWID); 
     int iName = c.getColumnIndex(KEY_NAME); 
     int iNum = c.getColumnIndex(KEY_NUM); 

     String rownum = c.getString(iRow); 
     String name = c.getString(iName); 
     String num = c.getString(iNum); 

     for (c.moveToFirst(); ! c.isAfterLast(); c.moveToNext()){ 
     result = result + rownum + " " + name + " " + num + "\n"; 
     table.addCell(c.getString(iRow)); 
     table.addCell(c.getString(iName)); 
     table.addCell(c.getString(iNum)); 
     } 

     document.add(table); 
     document.close(); 
     Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + "C:\\samplePDF.pdf"); 
    } catch (IOException ex) { 
     Logger.getLogger(createPDF.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 


} 
+0

此外,示例代碼顯示提出問題的人正在使用錯誤的庫。這是官方下載站點:http://itextsupport.com/download/android.html這些是一些演示:http://demo.itextsupport.com/Android/ –

回答

1

添加您要開始的其他活動 - Manifest.xml文件中的createPDF。

<activity android:name=".createPDF" /> 

和意圖語法如下,不是你已經使用了一個:

Intent pdfIntent = new Intent(SQLitExample.this,createPDF.class); 
    startActivity(pdfIntent); 

的Android資源:

Intent Developer Docs

退房上面的意向構造。您應該使用Intent(Context context, Class<?> cls)構造函數。