2015-10-08 2 views
4

У меня есть два объекта, созданных из двух разных классов, и оба класса не реализуются и не могут быть сериализованы. и я хочу ф передать эти объекты другой деятельности, поэтому я написал следующий код:Как передать объекты, не относящиеся к объекту, от деятельности к другой деятельности?

* Код:

//send object 
Intent intConnect = new Intent(mCtx.getApplicationContext(), ActConnect.class); 
      Bundle bndConnect = new Bundle(); 
      bndConnect.putParcelable("HeaderModel", (Parcelable) mHeaderModel); 
      bndConnect.putParcelable("DetailsModel", (Parcelable) mDetailsModel); 
      intConnect.putExtras(bndConnect); 
      intConnect.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      mCtx.startActivity(intConnect); 

//receive objects in the receiving activity 
Bundle extras = getIntent().getExtras(); 
    Header headerModel = (Header) extras.get("HeaderModel"); 
    Details detailsModel = (Details) extras.get("DetailsModel"); 

, но во время выполнения, я получаю ниже LogCat:

LogCat:

10-08 11:55:44.225 13138-13138/com.example.com.bt_11 E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.example.com.bt_11, PID: 13138 
java.lang.ClassCastException: com.example.com.adapter.Header cannot be cast to android.os.Parcelable 
     at com.example.com.adapter.MyExpandableList$1.onClick(MyExpandableList.java:152) 
     at android.view.View.performClick(View.java:5184) 
     at android.view.View$PerformClick.run(View.java:20893) 
     at android.os.Handler.handleCallback(Handler.java:739) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 

как я могу пройти нон parcelable OBJE cts от деятельности к другой деятельности?

+1

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

+0

Не могли бы вы преобразовать свой объект в Json, сохранить в общих настройках и получить с помощью Gson? http://stackoverflow.com/questions/5571092/convert-object-to-json-in-android http://stackoverflow.com/questions/14368624/json-to-java-object-using-gson Я сделал это пару раз, однако я не знаю, как его производительность сравнивается с обычными методами Parcelable и Serializable. –

+1

Если вы можете модифицировать этот класс, я рекомендую вам его изменить для реализации Serializable. – Nanoc

ответ

0

Вы можете сделать это так:

Ваш Модель класса будет выглядеть, как показано ниже:

public class ModelClass implements Serializable{ 

    // Other stuff 

} 

Как пройти:

Intent mIntent = new Intent(mContext, NextActivity.class); 
mIntent.putExtra("HeaderModel", mHeaderModel); 
startActivity(mIntent); 

Как добраться:

Header headerModel = (Header) getIntent.getSerializableExtra("HeaderModel"); 

Надеюсь, это вам поможет.

+2

Вы читали вопрос OP? 'Оба класса не реализуют последовательных или сериализуемых' – Rustam

+0

Что такое OP, пожалуйста? – LetsamrIt

+0

OP - это тот парень, который задал вам вопрос. @LetsamrIt – Manza

0

попробовать так:

 Bundle bundle=getIntent().getExtras(); 

    Header headerModel =(Header)) bundle.getParcelable("HeaderModel"); 
+0

Я получил точно такие же ошибки – LetsamrIt

1

Если ваш класс не реализует parcelable ни сериализации, и вы не можете их изменить (код не под вашим контролем, может быть), то вы не имеете никакого способа непосредственно посыла данные между двумя видами деятельности.

Однако вы можете передавать данные косвенно между двумя видами деятельности. Вы можете хранить их в одноэлементном классе (однако синглтоны трудно тестировать и т. Д.), Вы можете сохранять и извлекать их из своего класса приложений, или вы можете сохранять их в sharedpreferences, файле или базе данных, загружаемой вторым действием ,