result.getParcelable(AccountManager.KEY_INTENT, Intent.class)中Intent.class的作用是什么
时间: 2024-05-23 13:15:01 浏览: 185
对于 ``result.getParcelable(AccountManager.KEY_INTENT, Intent.class)``, ``Intent.class`` 的作用是指明返回的 ``Parcelable`` 类型应该是Intent类。在这种情况下,``getParcelable`` 方法将返回一个Intent对象。
相关问题
Android 开发 使用Java语言实现intent传递drawable图片参数
在Android开发中,使用Java语言通过Intent传递Drawable图片作为参数通常会涉及到序列化过程,因为直接将Drawable对象放入Intent可能会遇到数据不可持久化的限制。一种常见的做法是先将Drawable转换为Bitmap,然后将Bitmap保存到Bundle中。以下是基本步骤:
1. 获取Drawable对象:
```java
Drawable drawable = yourImageView.getDrawable();
```
2. 将Drawable转换为Bitmap:
```java
Bitmap bitmap = Bitmap.createBitmap(drawable.getWidth(), drawable.getHeight(), Bitmap.Config.ARGB_8888);
drawable.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight());
drawable.draw(bitmap);
```
3. 创建一个Bundle并将Bitmap添加进去:
```java
Bundle bundle = new Bundle();
bundle.putParcelable("image_key", ParceledBitmapUtil.writeToParcel(bitmap, null));
```
这里我们使用了`ParceledBitmapUtil`,它是Android提供的一个工具类,可以帮助我们在Intent之间安全地传输Bitmap。
4. 创建Intent并设置Bundle:
```java
Intent intent = new Intent(this, AnotherActivity.class);
intent.putExtras(bundle);
```
5. 在接收端处理Bundle:
```java
Bundle receivedBundle = getIntent().getExtras();
if (receivedBundle != null) {
Bitmap retrievedBitmap = ParceledBitmapUtil.readFromParcel(receivedBundle.getParcelable("image_key"));
// 现在可以使用retrievedBitmap做进一步操作
}
```
请注意,这种方式只适用于传送给另一个Activity或者服务。如果需要跨进程通信,可能还需要额外的步骤,比如使用AIDL。
android.os.Bundle
Android 的 `Bundle` 类是 Android 应用程序组件之间传递数据的重要工具,尤其是在 Activity 和 Fragment 之间的通信以及从启动模式(如 `Intent`)获取额外参数时。它是一种键值对集合,其中键通常是字符串,值可以是各种类型,包括基本类型、列表、数组、自定义对象等。
创建 Bundle 的常见方式有:
```java
Bundle bundle = new Bundle();
bundle.putString("key", "value");
bundle.putInt("integerKey", 10);
```
你可以通过 `getSerializable()` 或 `getParcelable()` 方法获取特定键对应的对象,然后用 `putSerializable()` 或 `putParcelable()` 存储。
在 Activity 中,`onCreate(Bundle savedInstanceState)` 方法接收的就是一个 Bundle,如果应用是从后台恢复过来(比如用户切换了其他应用),那么这个 Bundle 就会保存着之前的状态信息。
阅读全文