アンドロイド開発は初めてで、わずか2日で、データベースからデータを取得してpdf形式で表示したいと考えています。以前にnetbeansでこれを実行したことがありますが(これは機能しました)、Androidでコードを試したときにエラーが発生しました。btnPdf のアクションをトリガーする SQLitExample.java ファイルと、pdf を作成する createPDF.java ファイルがあります。新しいインテントを作成して createPDF.java ファイルを呼び出してみました。しかし、btnPdf をクリックすると、次のエラーが表示されます。
dalvikvm(6097): クラス 'com.example.hotornot.createPDF$1' が見つかりませんでした。メソッド 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);
}
}
}