2013-01-19 35 views
-1

我想发送OAScene场景对象到下一个活动类,但我不能。它停止immediately..if我打开其他活动类,而无需使用putExtra方法它的工作原理......但在我的病情,我需要发送的对象aplication ...尝试使用意图putExtra方法时运行时错误

继承人的代码

public void setScene(OAScene scene) { 
    final OAScene _scene = scene; 
    this.currentScene = scene; 
    setColor(color_black); 

    double dis; 
    dis = CalculationByDistance(latitudeOri, latitudeOri, scene.getLatitude(), scene.getLongitude()); 

    // Set the text fields of the notification bubble to match the data of 
    // the selected scene. 
    popup_name.setText("Name: " + scene.getName()); 
    popup_text.setText("Distance: " + dis + "m"); 

    more_info.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      OAScene scene=_scene; 
      Intent FacilityIntent; 
      FacilityIntent = new Intent(getContext(), MapViewActivity.class); 
      FacilityIntent.putExtra("scene", _scene); 
      getContext().startActivity(FacilityIntent); 
     } 
    }); 
} 

登录..

01-20 15:50:31.196: E/AndroidRuntime(21403): java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.hitlabnz.outdoorar.api.OAScene) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at android.os.Parcel.writeSerializable(Parcel.java:1181) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at android.os.Parcel.writeValue(Parcel.java:1135) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at android.os.Parcel.writeMapInternal(Parcel.java:493) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at android.os.Bundle.writeToParcel(Bundle.java:1612) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at android.os.Parcel.writeBundle(Parcel.java:507) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at android.content.Intent.writeToParcel(Intent.java:6190) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1696) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1382) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at android.app.Activity.startActivityForResult(Activity.java:3190) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at android.app.Activity.startActivity(Activity.java:3297) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at com.hitlabnz.tutorialbasic.TutorialSceneNotificationBubble$2.onClick(TutorialSceneNotificationBubble.java:141) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at android.view.View.performClick(View.java:3620) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at android.view.View$PerformClick.run(View.java:14292) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at android.os.Handler.handleCallback(Handler.java:605) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at android.os.Handler.dispatchMessage(Handler.java:92) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at android.os.Looper.loop(Looper.java:137) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at android.app.ActivityThread.main(ActivityThread.java:4512) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at java.lang.reflect.Method.invokeNative(Native Method) 
01-20 15:50:31.196: E/AndroidRuntime(21403): at java.lang.reflect.Method.invoke(Method.java:511) 

代码收到意向:

Intent i = getIntent(); 
     OAScene scene = (OAScene)i.getSerializableExtra("scene"); 
+0

你能说明你是如何接受'意图'的吗?你必须在那里做错了什么,或者'场景'是空的,当它传递到方法 – codeMagic

+0

请张贴ddms日志,以及代码如何收到意图 –

+0

@codeMagic ive更新我的问题帖子日志和接收意图代码 –

回答

0

试试这个,

facilityIntent= new Intent(YourCurrectActivity.this, MapViewActivity.class); 
facilityIntent.putExtra("scene", _scene); 
startActivity(facilityIntent); 

在第二个活动,你可以接收使用

getIntent().getSerializableExtra("scene"); 
  • 尽量遵循用于创建预先定义的类的对象。使用facilityIntent,而不是FacilityIntent
+0

不起作用。我试过 –

0

一个选项可以让你自定义的类实现Serializable接口,然后你可以在额外的意图使用putExtra(序列化..)的意图#putExtra变种传递对象实例( ) 方法。

伪代码:

//to pass : 
    intent.putExtra("MyClass", obj); 

// to retrieve object in second Activity 
getIntent().getSerializableExtra("MyClass"); 

有关详细说明,请参阅this

+0

我把序列化的自定义类 –

相关问题