2013-08-28 132 views
0

我已经创建了名为“EventFragment”的listFragment类,我需要在其click事件上传递数据对象以传递drawerActivity类(片段类),然后我需要将该对象传递给另一个名为EventDisplayActivity类的活动。我可以管理获取数据对象到drawerActivity类,但我不能将它发送到EventDisplayActivity类。将数据对象传递给另一活动的活动(片段 - >其活动 - >新活动)

//DrawerActivity code 
@Override 
public void OnEventItemClick(ZEvent zEventObject) { 

    Log.i("URI uri", ""+zEventObject.getEventName()); 

    zEventItem = (ZEvent)zEventObject; 
    Bundle b = new Bundle(); 
    b.putParcelable("EVENT_ITEM", zEventItem); 

    Intent i = new Intent(DrawerActivity.this, EventDisplayActivity.class); 
    i.putExtra("DUMMY","dummytext"); 
    i.putExtras(b); 
    startActivity(i); 

} 

// EventDisplayActivity 

@Override 
protected void onInit(ModelBase... data) { 

    System.out.println("onInit() Called in Event Display Activity"); 

    SharedPreferences sessionkey = getApplicationContext().getSharedPreferences("session_detail", Context.MODE_PRIVATE);   
    session_token = sessionkey.getString("session", ""); 
    logged_user_type = sessionkey.getString("user_type", ""); 
    logged_user_id = sessionkey.getString("user_id", ""); 

    Intent i = getIntent(); 
    Bundle extras = i.getExtras(); 
    ZEvent zEventbundle = extras.getParcelable("EVENT_ITEM"); 


    mProposalId = zEventbundle.getProposalID(); 
    String mDummy = getIntent().getStringExtra("DUMMY");  

    Log.i("id>>>",""+mProposalId +"Dummy"+mDummy); 

    params = new RequestParams(); 
    params.put("token", session_token); 
    params.put("proposal_id", mProposalId); 

mApiClient.getView(eventViewURL, params, eventResponse); 

}  

//LOgCat 

java.lang.RuntimeException: Unable to start activity 
ComponentInfo{gg.zing/gg.zin.zing.events.activities.EventDisplayActivity}: java.lang.NullPointerException 

Caused by: java.lang.NullPointerException 
at gg.zin.zing.events.activities.EventDisplayActivity.onInit(EventDisplayActivity.java:431) 

回答

0

我假设你ZEvent实现Parcelable ... 如果是的话,然后把在使用putExtra意图(而不是创建新的软件包,并使用putExtras),并提取使用getParcelableExtra以同样的方式。

// Put  
final Intent intent = new Intent(context, <class>); 
intent.putExtra("MY_EVENT", obj); // <-- Should be parcelable 
// Get. 
ZEvent obj = intent.getParcelableExtra("MY_EVENT"); 
+0

肯定。我没有将ZEvent(Model class)实现为Parcelable。您建议发送数据对象的方式也是正确的。感谢您的帮助 – cham

-1

您还可以定义在用于保存在静态字段中的数据类的静态属性。

public class AppData{ 
    public static String user = "Ben"; 
} 

您可以使用它像这样:

public void setUser(String user){ 
    AppData.user = user; 
} 
+0

您必须发送带有捆绑或事件(接口)的参数,如果您使用静态数据,您将获得超出范围的内存 –

相关问题