私は以前に指定されたソースから画像を表示するためのアプリケーションを作成しています。バージョンファイルが変更された場合は、これらのイメージをダウンロードします。利用可能なインターネット接続がない場合、以前にダウンロードしたローカルイメージが表示されます。このため Android ImageView:ローカルファイルからDrawableオブジェクトを生成できない
は、私はこのようなImageViewのとDrawableのオブジェクトを使用しています: 私はトリプル(この場合は「page1.jpeg」で)指定されたファイルが実際にディレクトリに存在しないことをDDMS経由で確認String imageName = Startseite.FILENAME_PRE + "1" + Startseite.FILENAME_POST;
Drawable d = Drawable.createFromPath(imageName);
mImageView.setImageDrawable(d);
"data/data/out.path/files/image1.jpeg"と入力します。ただし、上記のコード例では、2番目のコマンドはnullオブジェクトを返します。このファイルは通常の手段(ストリーム)で読み書き可能ですが、ImageViewは画像が気に入らないようです。
ここから進める方法がわかりません。画像の表示を可能にする重要なセキュリティ要素が欠けている可能性があります。または、画像を表示できないことがあります。表示可能な画像を確認するツールはありますか?
ありがとうございます。
編集1:私はこれにコードを変更しました:
String imageName = Startseite.FILENAME_PRE + "1" + Startseite.FILENAME_POST;
String imageNameWithPath = getApplicationContext().getFilesDir().getPath() + '/' + imageName;
Drawable d = Drawable.createFromPath(imageNameWithPath);
これが成功したDrawableオブジェクトを作成します。残念ながら、SetImageDrawable()を介してオブジェクトを割り当てると、私のデバッガはナットし、私が聞いたことがないクラスで4つの例外(おそらくいくつかのAndroidインターナショナル)を読み込みます。私は二重スラッシュをチェックしましたが(最後にコピーするので)、パスはきれいに見えます。
編集2:悲しいことに、私はストリームから描画可能オブジェクトを作成し、あらかじめ画像をダウンロードしていない場合と同じことが起こります。
編集3:アプリケーションが失敗したときのLogCatスニペットを示します。
06-28 08:14:32.323: WARN/dalvikvm(21462): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
06-28 08:14:32.323: ERROR/AndroidRuntime(21462): Uncaught handler: thread main exiting due to uncaught exception
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.ourcompany.apps/de.ourcompany.apps.Startseite}: java.lang.NullPointerException
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at android.os.Handler.dispatchMessage(Handler.java:99)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at android.os.Looper.loop(Looper.java:123)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at android.app.ActivityThread.main(ActivityThread.java:4363)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at java.lang.reflect.Method.invokeNative(Native Method)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at java.lang.reflect.Method.invoke(Method.java:521)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at dalvik.system.NativeStart.main(Native Method)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): Caused by: java.lang.NullPointerException
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at de.ourcompany.apps.Startseite.displayImages(Startseite.java:61)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at de.ourcompany.apps.Startseite.onCreate(Startseite.java:42)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
06-28 08:14:32.343: ERROR/AndroidRuntime(21462): ... 11 more
06-28 08:14:32.373: INFO/Process(64): Sending signal. PID: 21462 SIG: 3
06-28 08:14:32.373: INFO/dalvikvm(21462): threadid=7: reacting to signal 3
06-28 08:14:32.373: ERROR/dalvikvm(21462): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
私はBitmapFactory.decode()メソッドを使用してバージョンを試しましたが、悲しいことに例外も発生します。次のコードは、ビデオチュートリアルから茎:
私が追加することができますString mUrlString = "http://www.android.com/images/gingerdroid.png";
try {
mImageView.setImageDrawable(
Drawable.createFromStream(
(InputStream) new URL(mUrlString).getContent(),
"qrcode")
);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
このコードは、チュートリアルで動作し、まだそれはまったく同じイメージで私の試みは、これまでと同じ方法を終了します。
これが役に立ちます。
編集4:問題はちょっと解決しました。私はプロジェクトを新たに作成しました。新しいソースをcopypastadで作成し、新たにVMを作成しました。それが古いプロジェクトまたはVMだったなら、私は確かに言えません。
これは私の元々の問題に対する解決策でした。そのために解決策としてマークしました。ありがとう。 – 0xCAFEBABE