2

私はAndroidアプリを開発していますが、これは私が直面している1つの問題です:

メイン メニューは、画像 uri のインテントを別のアクティビティに渡し、2 番目のアクティビティで画像を表示します。

私は uri を取得する意図を処理し、それを onStart() メソッドでビットマップに変換します (これはスーパー クラス メソッドをオーバーライドするように自分でコーディングしました)。 (そうするのは正しいですか?)

アクティビティの画像ビューに画像をどこに設定すればよいですか?

私の問題は、画像を処理した後、アプリが強制的に閉じられることです。しかし、onStart() メソッドを削除すると、2 番目のアクティビティでエラーは発生しませんが、表示する画像はありません (画像を表示するプロセスを実行しているため)。

Log.d() メソッドを使用してプログラムが停止する場所を表示すると、インテントを処理してビットマップを取得するまでプログラムが実行されることが示されます (プログラムが現在終了する場所)。

これが私の onStrat() メソッドのコードです:

    protected void onStart()
    {

        Bitmap newBitmap = null;

        Intent imageURI = getIntent();
        Log.d("HERE", "intent received");

        String imageLoc = imageURI.getExtras().getString("IMAGE_URI");
        Log.d("HERE", imageLoc);

        Uri imageLocation = Uri.parse(imageLoc);
        Log.d("HERE", "Uri reated");

        try 
        {
        newBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageLocation);
    } 
        catch (FileNotFoundException e) 
        {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 

        catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

        Log.d("HERE", "bitmap created");


}

私は何かを台無しにして、最終的に解決策を見つけました。非同期タスク情報をありがとう、それは本当に私のプロセスをスピードアップしました.

ありがとうございました。

4

2 に答える 2

0

私は uri を取得する意図を処理し、それを onStart() メソッドでビットマップに変換します (これはスーパー クラス メソッドをオーバーライドするように自分でコーディングしました)。(そうするのは正しいですか?)

Activity. _ 最も一般的な方法は、AsyncTaskビットマップの処理に使用することです。onCreate()から追加情報を取得した直後に、メソッドで実行を開始する必要がありますIntent

アクティビティの画像ビューに画像をどこに設定すればよいですか?

IMO、それを行うのに最適な場所は-onPostExecute()の方法ですAsyncTask

于 2012-11-27T08:41:50.683 に答える
0

インテントを処理して uri を取得し、onResume() で画像を表示すると、うまくいきます。

于 2012-11-27T08:24:29.553 に答える