2013-09-07 3 views
0

Я пытаюсь отправить объект из одной активности в другую, поэтому я использую parcelable, и хотя я создал код для его отправки и получения, код внизу) кажется, что мне нужен какой-то код, чтобы иметь возможность фактически написать объект в посылку.Борясь с написанием моего объекта на Parcelable

Error While Passing An Object From An Activity To Another (Using Parcelable) Я считаю, что мне нужно сделать, это аналогично ответ, приведенным в этом, поэтому мне нужен writeToParcel метод, который я сделал в коде ниже. (Хотя в dest.writeValue(this); есть, где я получаю сообщение об ошибке) говорит StackOverFlowError

Я считаю, что мне также может понадобиться public static final Parcelable.Creator ... хотя не знаю, как его написать (я попытался написать один примерно и его бит в комментарии)

Кроме того, я не знаю, если мне нужно немного, что бы как public Clubs (Parcel source) ...

Любая помощь будет принята с благодарностью. Благодаря

public class Clubs implements Parcelable{ 
     public void setEvent(String eventType, String date) { 
      this.eventType = eventType; 
      this.date = date; 
     } 

    //contains lots of defined variables and various methods that 
    //aren't relevant for my question and would take up lots of room 
    //all like the one above. 


     //public static final Parcelable.Creator CREATOR 
     //= new Parcelable.Creator() { 
     // public Parcel createFromParcel(Parcel in) { 
     //  return (in); 
     // } 
     //}; 

     @Override 
     public int describeContents() { 
      // TODO Auto-generated method stub 
      return 0; 
     } 

     @Override 
     public void writeToParcel(Parcel dest, int flags) { 
        dest.writeValue(this); 
     } 

} 

Мой onItemClick класс, который помещает объект в посылку, и начинает новую деятельность

public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { 
       Clubs mymeeting = db.get(map.get(position)); 
       Intent i = new Intent(); 
       Bundle b = new Bundle(); 
       b.putParcelable("mymeeting", mymeeting); 
       i.putExtras(b); 
       i.setClass(ListSample.this, DynamicEvents.class); 
       startActivity(i); 
      } 

Начало моего нового кода активности, который будет править позже, когда он передает объект через правильно

public class DynamicEvents extends Activity 
{ 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     Bundle b = getIntent().getExtras(); 
     // Create the text view 
     TextView textView = new TextView(this); 
     textView.setTextSize(20); 
     textView.setText(" " + b.getParcelable("mymeeting").toString()); 

     // Set the text view as the activity layout 
     setContentView(textView); 
    } 
} 
+0

Есть ли причина, по которой вам нужно pareceable и просто не может передать URI вашему контенту или по крайней мере что-то, что вы можете использовать для поиска вашего контента? В идеале вы будете хранить эту информацию в базе данных, помните, что вы можете ... не означает, что вам следует. – JoxTraex

ответ

0

Rewrite writeToParcel Способ

@Override 
public void writeToParcel(Parcel dest, int flags) { 
    dest.writeString(eventType); 
    dest.writeString(date); 
} 

Вы не можете быть разрешено писать на заказ Java объект непосредственно. Либо напишите стандартные значения данных отдельно, либо сделайте свой объект serializable и используйте метод writeSerializable на Parcel объект.

Смежные вопросы