1

私はこのコードを持っています:

String filePath = getActivity().getFileStreamPath("into11.png").getAbsolutePath();
        if(Drawable.createFromPath(filePath)!=null){
        img.setImageDrawable(Drawable.createFromPath(filePath));
        }
        else{
        Log.d("nulllllllllllllllllllllllllllllllll","yessssssssssssssssssssssssssss");  
        }

ファイルパスは画像 "data/data/.../intro11.png" の正しいパスを取得していますが、Drawable.createFromPath(filePath) は null なので、これの原因は何ですか?

4

4 に答える 4

1

これと同じ問題があり、以前に内部ストレージに保存したファイルから Drawable を作成しようとしていました。私の問題は、ファイルが誤って保存されたため、ドローアブルが作成されなかったことです。また、デバッグ コンソールでエラーがスローされました。

これが誰かに役立つことを願っています。

これは保存する私のコードです(コメントアウトされたビットは私が見逃していたものです):

URL url = new URL(remoteFile);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
Bitmap bm = BitmapFactory.decodeStream(is);
FileOutputStream fos = mainActivity.openFileOutput(filename,            
Context.MODE_PRIVATE);
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
// bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
byte[] byteArray = outStream.toByteArray();
fos.write(byteArray);
fos.close();

画像を開いて再圧縮する必要がないように、ファイルをバイト単位で保存する方法を知りたいです。

于 2015-04-07T16:05:11.020 に答える
0

次のコードを使用します。

File drawableFile = new     File(getApplicationContext().getFilesDir().getAbsolutePath()+"/into11.png");

    if(Drawable.createFromPath(drawableFile.getAbsolutePath())!=null){
    img.setImageDrawable(Drawable.createFromPath(drawableFile.getAbsolutePath()));
    }
    else{
    Log.d("nulllllllllllllllllllllllllllllllll","yessssssssssssssssssssssssssss");  
    }


これがあなたの問題に役立ち、解決することを願っています。

于 2013-10-02T05:44:36.627 に答える
0

ユーザーmoh.suhkniが元の質問にコメントを投稿し、ほぼ完全に解決しました。

彼は投稿しました:

Uri uri = Uri.fromFile(filePath);
img.setImageURI(uri);

私が最終的に必要とした解決策は次のとおりです。

final Uri uri = Uri.parse(url);
final String path = uri.getPath();
final Drawable drawable = Drawable.createFromPath(path);
img.setImageDrawable(drawable);

何らかの理由でこれが機能しなかったため:

final Drawable drawable = Drawable.createFromPath(url);
// drawable ended up being null
img.setImageDrawable(drawable);

Android のDrawable.createFromPath()file://メソッドは、私のように で始まるパスを好まないようにする必要があります。Uri.parse()を使用すると、その問題が解決されました。

これが役立つことを願っています!

于 2013-10-15T20:37:44.190 に答える