我有一个Android应用程序。在那,滑块工作正常,共享按钮也正常工作。
但是,共享按钮只共享我在滑块中的三个总图像中设置的图像(因为我以这种方式编码),而不是滑块库中可见的当前图像。我只想用当前图像调用共享按钮代码,以便用户可以共享当前图像。
以下是一些细节, 3 ImageView for the slider中的3个图像。另外,我在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也是如此,因为为每个图像创建“if”并不好,所以我需要像数组一样的替代品或者左右解决当前的Drawable图像。
所以在上面的String中返回“null”,选择任何图像(我通过应用Toast检查它,并且在每种情况下都显示为null)。
如果我成功获取bg1(图像1)或bg2(图像2)或bg3(图像3),对于String中的当前图像,那么我可以轻松运行代码来共享特定的仅当图像出现在滑块库中时。
答案 0 :(得分:2)
行:String s = String.valueOf(mViewFlipper.getTag());
您正在尝试读取ViewFlipper的标签,而不是显示的图像。
使用flipper.getDisplayedChild();
检索显示的ImageView并从中读取标签。
此外,更好的方法是准备一个您正在显示的文件名数组,然后检索显示图像的索引:
flipper.indexOfChild(flipper.getCurrentView())
。
然后你可以使用这个索引进入你的文件名数组,并只为图像共享编写一次逻辑。