使用按钮将数据从一个视图发送到另一个视图

时间:2017-02-23 18:54:46

标签: android android-view

我有一个按钮,它是tablerow中的最后一个元素,如下所示:

<TableRow
    android:id="@+id/tableRow1"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:layout_marginRight="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginBottom="8dp">
<ImageView
    android:id="@+id/person1_icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="4dp"
    android:tag="@drawable/profile_one"
    android:src="@drawable/profile_one"
    />
    <TableLayout
        android:layout_width="200dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="4dp"
        android:orientation="horizontal">
        <TableRow android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:layout_marginRight="2dp"
            android:layout_marginLeft="2dp"
            android:layout_marginTop="2dp"
            android:layout_marginBottom="2dp">
            <TextView android:id="@+id/person1_seek"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="@string/person1_name"
                android:hint="@string/person1_name" />
        </TableRow>

    </TableLayout>

    <Button
        android:id="@+id/addButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="ShowView" />
</TableRow>

按钮的代码如下所示:

public void ShowView(View view) {
    Intent intent = new Intent(this, DisplaySeekAgain.class);
    startActivity(intent);
}

按下按钮时,我需要将此布局中的数据发送到新布局,特别是此数据:

  

机器人:文本= “@串/ person1_name”

来自其中一个TextViews

和此:

  

机器人:SRC = “@绘制/ profile_one”

来自ImageView的

我尝试在按钮代码中使用标记,如下所示:

   String text_tag = view.getTag().toString();
   intent.putExtra(EXTRA_NAME, text_tag);

这确实有效,但我无法弄清楚如何从ImageView发送图像。

有没有办法发送它们?

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以在图像视图中将可绘制ID设置为标记,并通过意图将其作为额外活动发送给其他活动。

public void ShowView(View view) {
    Intent intent = new Intent(this, DisplaySeekAgain.class);
    int drawableId = (Integer) myImageView.getTag();
    String textTag = (String) view.getTag();
    intent.putExtra(EXTRA_NAME, text_tag);
    intent.putExtra(EXTRA_DRAWABLE_ID, drawableId);
    startActivity(intent);
}

答案 1 :(得分:1)

假设您正在谈论的图像不是可绘制资源,就像您将Bitmap作为附加内容传递一样,您也可以传递图像(位图)。所以,从ImageView获取BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable(); Bitmap bitmap = drawable.getBitmap(); ,如下所示:

Bitmap

由于intent.putExtra(IMAGEVIEW_TAG, bitmap) 实现了Parcelable,你可以把它放在像

这样的附加内容中
Bitmap

只是一个建议,如果TransactionTooLarge太大,您将开始遇到this.cartService.list().subscribe( data => { console.log(data); this.cartData = data.cart; err => { console.log(err); }); 例外情况,特别是如果您定位API level 25(Android N设备)。您可能需要考虑将图像存储到数据库或其他不涉及传递大对象的方法,例如创建一个保留对象的单例类。

如果它是一个可绘制的资源,你可以参考艾哈迈德的回答。