あなたがやろうとしている方法は、残念ながら不可能です。新しい 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();。これにより、イメージ ピッカーが初期化されます。
いくつかの読書:
幸運を!