2017-12-13 5 views
0

私はをアクティビティから別のアクティビティに送信しようとしています。Ccountryはパーセルブルケースクラスです。すべてのコードはScalaで書かれています。問題は私がClassCastExceptionを得ている間にリストintent.putExtra("foo", list.asInstanceOf[Parcelable])のリストを送ることです。誰が私にここで何が問題なのか教えてもらえますか?アンドロイドスカラは、インテントを通じてリストを送信します

Logcatエラー

FATAL EXCEPTION: main 

Process: com.sam.scalasample, PID: 15003 

java.lang.ClassCastException: scala.collection.immutable.$colon$colon cannot be cast to android.os.Parcelable 
     at com.sam.scalasample.MainActivity$$anon$11.onClick(MainActivity.scala:173) 

私はクラスところで "scala.collection.JavaConversions._" を輸入し

sendArrayList.setOnClickListener(new OnClickListener { 
     override def onClick(v: View): Unit = { 
      var intent: Intent = new Intent(MainActivity.this, classOf[ParcelActivity]) 
      var list: List[Ccountry] = List() 
      var listBuffer: ListBuffer[Ccountry] = new ListBuffer[Ccountry]() 

      listBuffer += Ccountry("AF", "Afghanistan") 
      listBuffer += Ccountry("AL", "Albania") 
      listBuffer += Ccountry("DZ", "Algeria") 
      list = listBuffer.toList 
      intent.putExtra("foo", list.asInstanceOf[Parcelable]) 
      intent.putExtra(Parse.KEY, Parse.ARRAYLIST) 
      startActivity(intent) 
     } 
}) 

答えて

0

データの送信秒活動

val bundle: Bundle = getIntent.getExtras 
var foo: List[Ccountry] = List() 
if (bundle != null) { 
    foo = bundle.getParcelable("foo").asInstanceOf[List[Ccountry]] 
} 

をして、それを取得します私はarraylistを送ります。

//Getting it 
 

 
if(getIntent!=null){ 
 
     if(getIntent.getExtras.getString(Parse.KEY).equals(Parse.ARRAYLIST)){ 
 
     val bundle: Bundle = getIntent.getExtras 
 
     var array = new util.ArrayList[Ccountry]() 
 
     if (bundle != null) { 
 
      array = bundle.getParcelableArrayList("foo") 
 
      println("sammy_array_size: "+array.size()) 
 
     } 
 

 

 

 

 
     }
//Sending it 
 

 
sendArrayList.setOnClickListener(new OnClickListener { 
 
     override def onClick(v: View): Unit = { 
 
     var intent: Intent = new Intent(MainActivity.this, classOf[ParcelActivity]) 
 
     var list: List[Ccountry] = List() 
 
     var listBuffer: ListBuffer[Ccountry] = new ListBuffer[Ccountry]() 
 

 
     listBuffer += Ccountry("AF", "Afghanistan") 
 
     listBuffer += Ccountry("AL", "Albania") 
 
     listBuffer += Ccountry("DZ", "Algeria") 
 
     list = listBuffer.toList 
 
     val array = new util.ArrayList(list) 
 
     val bundle: Bundle = new Bundle 
 
     bundle.putParcelableArrayList("foo", array) 
 
     intent.putExtras(bundle) 
 
     intent.putExtra(Parse.KEY, Parse.ARRAYLIST) 
 
     startActivity(intent) 
 
     } 
 
    })

関連する問題