2016-07-11 21 views
0

私はAndroid用アプリケーションを持っています。その中で、スライダは正常に動作しており、共有ボタンも正しく動作しています。現在の画像を取得してAndroidで共有する

しかし、共有ボタンは、スライダーギャラリーに表示されている現在の画像ではなく、スライダー内の3つの画像のうちコードで設定した画像のみを共有しています。ユーザーが現在の画像を共有できるように、現在の画像で共有ボタンコードを呼び出すだけです。

詳細はこちら 3 ImageView for the 3 slider for Image。また、私はViewFlipperでこれらを取った:

画像1

 android:id="@+id/imageview1" 
     android:tag="bg1" 
     android:src="@drawable/image1 

画像2

 android:id="@+id/imageview2" 
     android:tag="bg2" 
     android:src="@drawable/image2 

画像3

 android:id="@+id/imageview3" 
     android:tag="bg3" 
     android:src="@drawable/image3 

今まで、私は、

これを試してみました
Button btShare = (Button) findViewById(R.id.shareImage); 
    btShare.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      share(); 
     } 
    }); 

今、私は現在の画像を必要とするshare()関数コードスニペットです。そのために、私はsetTag()とgetTag()を取りましたが、私はまだ混乱しています。 ここでは、すべての3つの画像のタグを設定していますので、その価値を得ることができます。

mImageView=(ImageView)findViewById(R.id.imageview1); 
    mImageView.setTag("bg1"); 

    mImageView=(ImageView)findViewById(R.id.imageview2); 
    mImageView.setTag("bg2"); 

    mImageView=(ImageView)findViewById(R.id.imageview3); 
    mImageView.setTag("bg3"); 

    String s = String.valueOf(mViewFlipper.getTag()); 

    Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show(); 

    if (s.equals("bg1"))/
    { 
     // now the code for share button starts, in that a folder gets 
     created in the Directory and a default name is given to the 
     image which gets saved there, like 

     File f = new File(dir, "savedImage1.png"); 

私はわからない(私はしたくないことのいずれか)について上記のif-elseあまりにも、「あれば」すべての画像のために作成することは良いではないので、私は代替を必要とするので、配列のように)、現在のDrawableイメージを回避することができます。

上記のStringでは、画像を選択する際に "null"が返されます(Toastを適用してチェックし、すべての場合にnullを表示しています)。

bg1(画像1の場合)、bg2(画像2の場合)、bg3(画像3の場合)、文字列sの現在の画像の取得に成功した場合は、スライダーギャラリーに表示されるときは、特定の画像のみ。

答えて

2

ライン:String s = String.valueOf(mViewFlipper.getTag());

あなたはViewFlipperのタグではなく、表示された画像を読み込むしようとしています。

flipper.getDisplayedChild();を使用すると、表示されているImageViewを取得し、そのタグを読み取ることができます。

さらに、表示するファイル名の配列を準備し、表示された画像のインデックスを flipper.indexOfChild(flipper.getCurrentView())で取得することをお勧めします。

このインデックスを使用してファイル名の配列にアクセスし、イメージ共有のロジックを1回だけ書き込むことができます。

+0

ありがとうございました。@Axarydax私はflipper.getDisplayedChild()を理解しました。それは完璧に働いた。 –

+0

しかし、BITMAPを一度呼び出す必要があるので、配列を作成して値を取得する方法についてはまだ混乱しています。私は以下のように別々にしたくないという意味です。bitmap = BitmapFactory.decodeResource(getResources()、R.drawable.image1); image1など –

+0

@AmanChawlaアクティビティでイメージIDのint []配列を定義し、その中にR.drawable.image1、R.drawable.image2などの値を設定できます。あなたのViewFlipperと同じ順序を保っているならば、配列のインデックスとして 'indexOfChild'を使ってイメージIDを取得できます。 – Axarydax

関連する問題