私はpdfビューアを実装しようとしています。画像でわかるように、アプリケーションはsdカードに保存されているPDFを検出するようになります。 http://img225.imageshack.us/img225/3852/pdfs.png
しかし、ファイルをクリックして表示すると... エラー。
これは LOGCAT です。
06-28 07:32:46.963: WARN/dalvikvm(330): Unable to resolve superclass of Lcom/example/trypdf/Second; (496)
06-28 07:32:46.983: WARN/dalvikvm(330): Link of class 'Lcom/example/trypdf/Second;' failed
06-28 07:32:46.983: ERROR/dalvikvm(330): Could not find class 'com.example.trypdf.Second', referenced from method com.example.trypdf.PDFViewerActivity.openPdfIntent
06-28 07:32:47.013: WARN/dalvikvm(330): VFY: unable to resolve const-class 419 (Lcom/example/trypdf/Second;) in Lcom/example/trypdf/PDFViewerActivity;
06-28 07:32:47.013: DEBUG/dalvikvm(330): VFY: replacing opcode 0x1c at 0x0002
06-28 07:32:47.013: DEBUG/dalvikvm(330): VFY: dead code 0x0004-000e in Lcom/example/trypdf/PDFViewerActivity;.openPdfIntent (Ljava/lang/String;)V
06-28 07:32:47.373: INFO/ActivityManager(59): Displayed activity com.example.trypdf/.PDFViewerActivity: 1665 ms (total 1665 ms)
06-28 07:32:52.593: DEBUG/dalvikvm(131): GC_EXPLICIT freed 1336 objects / 74064 bytes in 149ms
06-28 07:33:28.634: DEBUG/SntpClient(59): request time failed: java.net.SocketException: Address family not supported by protocol
06-28 07:33:55.655: DEBUG/AndroidRuntime(330): Shutting down VM
06-28 07:33:55.663: WARN/dalvikvm(330): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
06-28 07:33:55.684: ERROR/AndroidRuntime(330): FATAL EXCEPTION: main
06-28 07:33:55.684: ERROR/AndroidRuntime(330): java.lang.NoClassDefFoundError: com.example.trypdf.Second
06-28 07:33:55.684: ERROR/AndroidRuntime(330): at com.example.trypdf.PDFViewerActivity.openPdfIntent(PDFViewerActivity.java:46)
06-28 07:33:55.684: ERROR/AndroidRuntime(330): at com.example.trypdf.PDFViewerActivity.onListItemClick(PDFViewerActivity.java:41)
06-28 07:33:55.684: ERROR/AndroidRuntime(330): at android.app.ListActivity$2.onItemClick(ListActivity.java:321)
06-28 07:33:55.684: ERROR/AndroidRuntime(330): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
06-28 07:33:55.684: ERROR/AndroidRuntime(330): at android.widget.ListView.performItemClick(ListView.java:3382)
06-28 07:33:55.684: ERROR/AndroidRuntime(330): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
06-28 07:33:55.684: ERROR/AndroidRuntime(330): at android.os.Handler.handleCallback(Handler.java:587)
06-28 07:33:55.684: ERROR/AndroidRuntime(330): at android.os.Handler.dispatchMessage(Handler.java:92)
06-28 07:33:55.684: ERROR/AndroidRuntime(330): at android.os.Looper.loop(Looper.java:123)
06-28 07:33:55.684: ERROR/AndroidRuntime(330): at android.app.ActivityThread.main(ActivityThread.java:4627)
06-28 07:33:55.684: ERROR/AndroidRuntime(330): at java.lang.reflect.Method.invokeNative(Native Method)
06-28 07:33:55.684: ERROR/AndroidRuntime(330): at java.lang.reflect.Method.invoke(Method.java:521)
06-28 07:33:55.684: ERROR/AndroidRuntime(330): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-28 07:33:55.684: ERROR/AndroidRuntime(330): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-28 07:33:55.684: ERROR/AndroidRuntime(330): at dalvik.system.NativeStart.main(Native Method)
06-28 07:33:55.693: WARN/ActivityManager(59): Force finishing activity com.example.trypdf/.PDFViewerActivity
06-28 07:33:56.213: WARN/ActivityManager(59): Activity pause timeout for HistoryRecord{44fe47a0 com.example.trypdf/.PDFViewerActivity}
私はほとんどすべてを試しました:
- 新しいプロジェクトを作成し、クラスをコピーします。
- 他のターゲット (APIS lvl10),(2.2,_lvl8) を使用します。
- クリーンアップしてビルド
- ADB をリセットします。
- PDFViewerを別サイトからダウンロードしたライブラリをご利用ください。
しかし、私はいつも同じエラーを受け取ります:
06-28 07:32:46.983: ERROR/dalvikvm(330): Could not find class 'com.example.trypdf.Second', referenced from method com.example.trypdf.PDFViewerActivity.openPdfIntent
06-28 07:33:55.684: ERROR/AndroidRuntime(330): java.lang.NoClassDefFoundError: com.example.trypdf.Second
ここには、私の 2 つのクラスと MANIFEST も表示されます。
PDFViewerActivity.java
package com.example.trypdf;
import java.io.File;
import java.io.FilenameFilter;
import com.example.trypdf.Second;
import net.sf.andpdf.pdfviewer.PdfViewerActivity;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class PDFViewerActivity extends ListActivity {
String[] pdflist;
File[] imagelist;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
File images = Environment.getExternalStorageDirectory();
imagelist = images.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return ((name.endsWith(".pdf")));
}
});
pdflist = new String[imagelist.length];
for (int i = 0; i < imagelist.length; i++) {
pdflist[i] = imagelist[i].getName();
}
this.setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, pdflist));
}
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
String path = imagelist[(int) id].getAbsolutePath();
openPdfIntent(path);
}
private void openPdfIntent(String path) {
try {
final Intent intent = new Intent(PDFViewerActivity.this, Second.class);
intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, path);
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Second.java
package com.example.trypdf;
import net.sf.andpdf.pdfviewer.PdfViewerActivity;
import net.sf.andpdf.pdfviewer.R;
import net.sf.andpdf.pdfviewer.R.drawable;
import net.sf.andpdf.pdfviewer.R.id;
import net.sf.andpdf.pdfviewer.R.layout;
import android.os.Bundle;
public class Second extends PdfViewerActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
public int getPreviousPageImageResource() {
return R.drawable.left_arrow;
}
public int getNextPageImageResource() {
return R.drawable.right_arrow;
}
public int getZoomInImageResource() {
return R.drawable.zoom_in;
}
public int getZoomOutImageResource() {
return R.drawable.zoom_out;
}
public int getPdfPasswordLayoutResource() {
return R.layout.pdf_file_password;
}
public int getPdfPageNumberResource() {
return R.layout.dialog_pagenumber;
}
public int getPdfPasswordEditField() {
return R.id.etPassword;
}
public int getPdfPasswordOkButton() {
return R.id.btOK;
}
public int getPdfPasswordExitButton() {
return R.id.btExit;
}
public int getPdfPageNumberEditField() {
return R.id.pagenum_edit;
}
}
マニフェスト
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.trypdf"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name="com.example.trypdf.PDFViewerActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.trypdf.Second"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
ありがとう!!!