1

ユーザーがカスタム背景をインポートできるようにするプログラムを取得しようとしています。

私がいる場所は次のとおりです。

別の関数を引数として取る getDrawable 関数があります。

mDrawableBg = getResources().getDrawable(getImage());   

getImage() は、選択した画像を参照する整数を返すと想定されています。その関数のコード (これまでのところ) は次のとおりです。

public int getImage(){

    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);  
    intent.setType("image/*");
    startActivityForResult(intent, 10);

}

これは、ギャラリーを開いて、ユーザーが画像を選択できるようにすることを想定しています。次に、mDrawableBg を使用して背景を設定します。ただし、選択した画像に参照 ID を返す方法がわかりません。助言がありますか?

4

3 に答える 3

2

これを試して:

    String pathName = "selected Image path";
    Resources res = getResources();
    Bitmap bitmap = BitmapFactory.decodeFile(pathName);
    BitmapDrawable bd = new BitmapDrawable(res, bitmap);
    View view = findViewById(R.id.container);
    view.setBackgroundDrawable(bd);
于 2012-07-25T05:56:31.647 に答える
1

よくわかりませんが、そのインテントから結果を受け取る方法がわからない場合は、次を使用できます。

    @Override
    protected void onActivityResult(int requestCode,int resultCode,Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode == RESULT_OK) 
        {
            if (requestCode == 10)
            {
                // DoSomething
            }
        }
    }
于 2012-07-25T05:55:20.453 に答える
1

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

いくつかの読書:

幸運を!

于 2012-07-25T06:19:39.723 に答える