更新:
IParcelable显然是。最后,我在类中使用了.NET序列化,然后将序列化的数据打包/捆绑在特定于安卓的代码中,这很好用。它还保持了类的跨平台兼容性,这是可取的。
原问题:
我正在尝试将Parcelable实现为Mono for Android应用程序中类的一部分,但Xamarin的Parcelable文档是从Android文档中复制粘贴过来的:
public class MyParcelable implements Parcelable {
private int mData;
public int describeContents() {
return 0;
在C#中,我需要编写一个类的构造函数,如下所示,它从android扩展基类。"Parcelable“我得到了一个错误"Parcelable“不包含接受0参数的构造函数。
我看到了和,但都没有用。我的班级如下:
...
using Parcel = Android.OS.Parcel;
using Parcelable = Android.OS.Parcelable;
/// <summary>
/// Created by hashmi on 07/07/2015.
/// </summary>
public class Classname: Parc
我有两个类,假设它们如下所示:
Movie.java
public class Movie implements Parcelable {
private int year;
private List<Actor> actors;
// Constructor, getters and setters, Parcelable implementation
}
Actor.java
public class Actor implements Parcelable {
private String name;
private Movie
我正在使用Android中的Parcelable,我对这个错误很好奇.
11-23 16:17:07.174: E/AndroidRuntime(1277):由: android.os.BadParcelableException: Parcelable协议引起,需要一个名为com.gleason.apahelper.model.PlayerTeam类上的创建者的Parcelable.Creator对象
当然是因为我错过了这个..。
public static final Parcelable.Creator<Player> CREATOR = new Parcelable
我在玩Android框架,试着让我的思想深入到Java中去。为此,我阅读了有关Javas和反射API的文章,但我并不真正理解它。因为我是一个懒散的开发人员),我试图编写一个‘Parcelable容器’,在其中我可以将任何我想要得到的对象放到Parcelable中,而不需要再次使用Java反射的方法为每个对象实现它。
我编写了这样的测试方法:
public <T> void writeClassInformations(T t){
Class c = t.getClass();
System.out.println("DeclaredFiel
我想在一个多平台项目中创建一个类,并使用Parcelize使其在Android版本中成为Parcelable。
因此,在我的lib-common项目中,我尝试了:
expect annotation class Parcelize()
expect interface Parcelable
@Parcelize
data class Foo(x: Int): Parcelable
在我的lib-android项目中:
actual typealias Parcelize = kotlinx.android.parcel.Parcelize
actual typealias Parcelabl
在Android应用程序中,我尝试从Bundle中提取额外的内容,如下所示:
Parcelable p = intent.getExtras().getParcelable("android.nfc.extra.NDEF_MESSAGES");
但是我得到了以下异常
Key android.nfc.extra.NDEF_MESSAGES expected Parcelable but value was a [Landroid.os.Parcelable;. The default value <null> was returned.
Attempt to cas
在我的Parcelable类中,在writeToParcel方法中,我得到了这个错误:
Inferred type 'MyObject' for type parameter 'T' is not within its bound; should
implement 'android.os.Parcelable
当我尝试编写一个ArrayList时,通过这种方式:
dest.writeTypedList(new ArrayList<MyObject>());
在我的代码中,我可以通过dest.writeString来写字符串,但是当我尝试写
我希望Pro卫兵更努力地混淆Parcelable类,因此我在以下位置更改了我的文件:
${sdk.dir}/tools/proguard/proguard-android.txt
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
使用
-keepclassmembers class * implements android.os.Parcelable {
public static final android.os.Parcela
我试图在android应用程序中获得这样的通知的大图标:
val bm = BitmapFactory.decodeResource(this.resources, R.mipmap.ic_launcher)
它在Android7.1中工作正常,但在android 8中抛出异常:
Caused by: java.lang.IllegalStateException: bm must not be null
这是相同的代码,没有任何变化。有人知道怎么回事吗?我在用Kotlin(如果有关系的话)。
我的项目链接了多个proguard文件。如果我查看所有proguard文件,下面是处理Parcelable的规则
-keepclassmembers class * implements android.os.Parcelable {
public static final ** CREATOR;
}
-keep class * implements android.os.Parcelable {
*;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR
我为小屏幕(2.7英寸)做了一个网格视图的布局。我的图标是48x48px。现在我想要在平板电脑上显示网格视图,所以我创建了一个新布局,并将设置更改为“大”和“横向”。我想在平板电脑上使用更大的图标:72x72px。问题是大图标没有出现,但小图标出现了。我的小图标在drawable-mdpi文件夹中,大图标在drawable-hdpi文件夹中。我试着把大图标移到drawable-xhdpi文件夹中,但没有成功。我还试图更改imageadapter的scaletype和layoutparams,但也没有成功,有人能帮我在平板电脑上获得更大的图标吗?
下面是我的大布局代码:
<?xml ver
在Android ViewModel中,如何编写单元测试来验证savedStateHandle是否正确地保存和恢复值?
class SampleViewModel(
private val savedStateHandle: SavedStateHandle
) : ViewModel() {
var foo: Int = 0 // In the actual code, foo is a non-parcelable type
init {
savedStateHandle.get<Int>("foo")?.let {
我在向parcel编写对象集合时遇到了一个问题。我有一个存储在MyRegistry中的MyObject集合(即任何实现了可打包的对象),它也必须是可打包的:
public class MyObject implements Parcelable {...}
public class MyRegistry implements Parcelable {
private List<Parcelable> mRegistry = new ArrayList<Parcelable>();
...
public void writeToParcel(Parce
我正在Kotlin开发Android项目。我想要创建一个实现Parcelable接口的模型类。这就是我试过的:
@Parcelize
data class School(
@Expose val name: String?,
@Expose val address: String?,
): Parcelable
但是,我发现编译器错误地说“班校不是抽象的,也没有实现android.os.Parcelable中定义的抽象memeber android.os.Parcelable”。
我明白这个错误是什么意思。但是如何消除这个错误呢?我的Kotlin版本是1.3.50