0

このライブラリを使用して、編集した画像を取得し、別のアクティビティの ImageView に配置しようとしています...

関数を呼び出して、編集したドローアブルを他の ImageView に設定します。

Log.d("eiDR",gImageView.getDrawable().toString());
PreviewPostal pp = new PreviewPostal();
pp.setImage(gImageView.getDrawable());

編集したドローアブルを他の ImageView に設定します (PreviewPostal アクティビティ内):

public void setImage(Drawable dr){
    Log.d("ppDR",dr.toString());
    //ImageView iv = (ImageView)this.findViewById(R.id.imageForTest);
    //iv.setImageDrawable(dr);
}

これは同じドローアブルをログに記録しますが、これら 2 行のコメントを外すと、NPE が発生します。

注: アクティビティは TabHost にラップされます (各アクティビティは独自のレイアウトを持つタブです)。

前もって感謝します!

編集:アクティビティ(タブ)を追加する方法:

mTabHost = getTabHost();

// Tab Editar Imagem
TabSpec editImageSpec = mTabHost.newTabSpec("Imagem");
editImageSpec.setIndicator(setTabIndicator(getResources().getDrawable(R.drawable.tab_editimage_icon)));
Intent editImageIntent = new Intent(this, EditImage.class);
editImageIntent.putExtra("imagem", getIntent().getStringExtra("imagem"));
editImageSpec.setContent(editImageIntent);
4

2 に答える 2

1

オプション:

1.結果のアクティビティを開始でき、呼び出されたアクティビティの結果で、ドローアブルのbyte[]を呼び出し元のアクティビティに戻すだけです。

2. SDカードに事前定義された場所を用意し、その場所で呼び出されたアクティビティから画像を保存し、呼び出しアクティビティから同じ場所にアクセスします

3.シリアル化可能を実装する単純なpojoを記述します。次に、結果の2番目のアクティビティを開始し、2番目のアクティビティの結果でpojoにデータを入力し、呼び出されたアクティビティから呼び出し元のアクティビティに返します。

これがお役に立てば幸いです。

于 2012-06-08T12:19:47.740 に答える
1

これを単純に行うことはできません。まず、この行の意味を説明しましょう。

ImageView iv = (ImageView)this.findViewById(R.id.imageForTest);

これは単に、現在のアクティビティに存在する要素を参照しようとしていることを意味します。つまり、setContentViewを使用して提供できたレイアウトです。Androidが現在のレイアウトでこのImageViewを検索すると、明らかに存在せず、Null Pointer Exceptionがスローされます。

実際に行う必要があるのは、なんらかの方法で Drawable を保存し、後でそのアクティビティに渡すときに、Drawable をその ImaegView に設定する必要があることです。

Drawable を Bitmap に変換し、putExtra を使用して次のアクティビティに送信する方法については、このリンクを参照してください。

https://stackoverflow.com/a/9033864/603744

于 2012-06-08T11:28:42.877 に答える