あなたがやろうとしている方法は、残念ながら不可能です。新しい Android 開発者として学びたいことの 1 つは、アクティビティ間のサイクルがどのように機能するかです。あなたの場合、そこからデータを取得するためにActivity
を呼び出す を実行しています。Intent
ただし、Android API では、Intent
は独自の時間でしか参照できません。getImage()
これは、試した方法でメソッドを使用できないことを意味します。
しかし、希望はあります!
最初に行う必要があるのは、 を呼び出すことIntent
です。にあるコードを使用してこれを行いますgetImage()
。
public void getImage() { // This has to be a void!
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, 10);
}
このメソッドは、ユーザーが選択できるイメージ ピッカーを開始します。次に、返されたものをキャッチする必要があります。これはメソッドから返すことはできませんgetImage()
が、代わりに他の場所から収集する必要があります。
以下のメソッドを実装する必要があります。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
final int SELECT_PICTURE = 1; // Hardcoded from API
if (requestCode == SELECT_PICTURE) {
String pathToImage = data.getData().getPath(); // Get path to image, returned by the image picker Intent
mDrawableBg = Drawable.createFromPath(pathToImage); // Get a Drawable from the path
}
}
}
最後に、 を呼び出す代わりにmDrawableBg = getResources().getDrawable(getImage());
、単に を呼び出しますgetImage();
。これにより、イメージ ピッカーが初期化されます。
いくつかの読書:
幸運を!