2014-06-05 75 views
1

我已經使用parcelable成功傳遞了對象的數組列表。但是當我試圖將一個對象從一個活動傳遞給另一個時,它不起作用。這個Parcelable對象傳遞有什麼問題?

在第一活性(ShowActivity)中,i有一個GridView和的onclick我想一個對象發送到另一個活動並顯示1個一個對象的值的結果:

ShowActivity ::

gridView.setOnItemClickListener(new OnItemClickListener() 
{ 
@Override 
public void onItemClick(AdapterView<?> parent, View v,int position, long id) 
{ 
    aStudent = students.get(position); 
    Toast.makeText(ShowActivity.this, String.valueOf(aStudent.getstudentdID()), 2000).show(); 

    /*Intent myIntent = new Intent(ShowActivity.this,ViewStudentInfoActivity.class); 
     myIntent.putExtra("studentObj", aStudent); 
    //myIntent.putExtra("studentObj", aStudent.getstudentName()); 
    startActivity(myIntent);*/ 

    Bundle b = new Bundle(); 
    b.putParcelable("studentObj", aStudent); 
    Intent myIntent2 = new Intent(ShowActivity.this,ViewStudentInfoActivity.class); 
    startActivity(myIntent2.putExtras(b)); 
    } 
}); 

而在ViewStudentInfoActivity的的onCreate()::

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_viewstudent_info); 

    getPassedVal(); 
} 


private void getPassedVal() 
{ 
    Intent intent = new Intent(); 

    /* if(intent!=null) 
    { 
    Student aaStudent = (Student) intent.getParcelableExtra("studentObj"); 
    Log.d("vv", aaStudent.getstudentName()); 
    } */ 

    Bundle b = getIntent().getExtras(); 
    if(b != null) { 
     Student aaStudent = (Student)(b.getParcelable("studentObj")); 
     String str = aaStudent.getstudentName().toString(); 
    } 
} 

雖然吐司顯示結果,這意味着對象是好的。但不能從第二項活動中回收它?有點奇怪。難道我做錯了什麼?

+1

你改變的關鍵? – Raghunandan

+0

@拉康丹丹,謝謝。是的,我已編輯它,現在工作正常。但是,只有當我使用捆綁包時它仍然可以工作當我僅使用intent時,這不起作用,這是作爲代碼中的註釋。即使我試圖通過一個值,這也不工作! – shaon007

+1

如果你想使用註釋代碼,你需要改變'意圖intent =新意圖();'意圖意圖= getIntent();' –

回答

1

看看這些行:

b.putParcelable("studentObj", aStudent); 
Student aaStudent = (Student)(b.getParcelable("aStudent")); 

您使用不同的密鑰。 「studentObj」vs「aStudent」。

1

嘗試使用下面的代碼:

b.putExtra("studentObj", aStudent); // instead of b.putParcelable 

和獲得是:

Student aaStudent = b.getParcelable("studentObj"); 

如果這沒有幫助你請張貼Student

相關問題