こんにちは、アプリケーションが parcelable を書き込むときに奇妙なエラーが発生しました。
コードで:
package com.android.edl;
import java.io.IOException;
import org.xmlpull.v1.XmlSerializer;
import com.tools.edl.Tools;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Parcel;
import android.os.Parcelable;
public class ElementDescription implements Parcelable {
private int Id;
private String natureText = "";
private String UsureText = "";
private String FonctionnementText = "";
private String EtatText = "";
private Tools tools = new Tools();
private static String table = "edl_ElementDescription";
public ElementDescription (Parcel in)
{
Id = in.readInt();
natureText = in.readString();
UsureText = in.readString();
FonctionnementText = in.readString();
EtatText = in.readString();
}
public ElementDescription ()
{
}
public int update(SQLiteDatabase db)
{
ContentValues values = new ContentValues();
values.put("natureText", natureText);
values.put("usureText", UsureText);
values.put("fonctionnementText", FonctionnementText);
values.put("fonctionnement", FonctionnementText);
values.put("etatText", EtatText);
this.Id = (int) db.insert(table, null, values);
return this.Id;
}
public void maj(SQLiteDatabase db)
{
ContentValues values = new ContentValues();
values.put("natureText", natureText);
values.put("usureText", UsureText);
values.put("fonctionnementText", FonctionnementText);
values.put("fonctionnement", FonctionnementText);
values.put("etatText", EtatText);
db.update(table, values, "id=?", new String[] {String.valueOf(Id)});
}
public void init(SQLiteDatabase db,int id)
{
Cursor description = db.query(table, new String[]{"natureText","usureText","fonctionnementText","etatText","id"}, "id=?", new String[] {String.valueOf(id)}, null, null, null);
description.moveToFirst();
if(description.getCount()>0)
{
natureText = tools.isNull(description.getString(0));
UsureText = tools.isNull(description.getString(1));
FonctionnementText = tools.isNull(description.getString(2));
EtatText = tools.isNull(description.getString(3));
Id = description.getInt(4);
}
}
public void createXml(XmlSerializer xmlSerializer) throws IllegalArgumentException, IllegalStateException, IOException
{
xmlSerializer.startTag("", "Description");
if(!tools.isEmpty(natureText))
{
xmlSerializer.startTag("", "NatureText");
xmlSerializer.text(natureText);
xmlSerializer.endTag("", "NatureText");
}
if(!tools.isEmpty(UsureText))
{
xmlSerializer.startTag("", "UsureText");
xmlSerializer.text(UsureText);
xmlSerializer.endTag("", "UsureText");
}
if(!tools.isEmpty(FonctionnementText))
{
xmlSerializer.startTag("", "FonctionnementText");
xmlSerializer.text(FonctionnementText);
xmlSerializer.endTag("", "FonctionnementText");
}
if(!tools.isEmpty(EtatText))
{
xmlSerializer.startTag("", "EtatText");
xmlSerializer.text(EtatText);
xmlSerializer.endTag("", "EtatText");
}
xmlSerializer.endTag("", "Description");
}
public int getId() {
return Id;
}
public void setId(int id) {
Id = id;
}
public String getNatureText() {
if(natureText==null)
return "";
else
return natureText;
}
public void setNatureText(String natureText) {
this.natureText = natureText;
}
public String getUsureText() {
return UsureText;
}
public void setUsureText(String usureText) {
UsureText = usureText;
}
public String getFonctionnementText() {
return FonctionnementText;
}
public void setFonctionnementText(String fonctionnementText) {
FonctionnementText = fonctionnementText;
}
public String getEtatText() {
return EtatText;
}
public void setEtatText(String etatText) {
EtatText = etatText;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(Id);
out.writeString(natureText);
out.writeString(UsureText);
out.writeString(FonctionnementText);
out.writeString(EtatText);
}
public static final Parcelable.Creator<ElementDescription> CREATOR
= new Parcelable.Creator<ElementDescription>() {
public ElementDescription createFromParcel(Parcel in) {
return new ElementDescription(in);
}
public ElementDescription[] newArray(int size) {
return new ElementDescription[size];
}
};
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
}
「out.writeString(EtatText)」の行で
アプリケーションを実行すると、listView の項目をクリックすると 10 分の 1 になります。他のアクティビティに送信するための percelable オブジェクトがエラーを出力する場合:
「トレースファイルを開く際のエラー: そのようなファイルまたはディレクトリはありません!」エラー「デバッガーのローカル 8700 にバインドできません」までの無限ループで
彼があなたにこのエラーに会った人はいますか?