2016-12-12 1 views
0

私は本当に頭が痛いという問題があります。私はVisual StudioでXamarinを使ってアンドロイドアプリを作ろうとし始めましたが、私はList<int>を新しいアクティビティにインテントで渡そうとしています。ここに私のMainActivity.csコードです。Xamarin C#:意図してリスト<int>を送信できません

intent.PutIntegerArrayListExtra("saved_counter", savedCounters);

私は、このエラーを与えている:

Argument 2: cannot convert from 'System.Collections.Generic.List<int>' to 'System.Collections.Generic.IList<Java.Lang.Integer>'

私の知る限り、私は」ので

using Android.App; 
using Android.Widget; 
using Android.OS; 
using System.Collections.Generic; 
using Android.Views; 
using Android.Content; 

namespace adrd_count { 
    [Activity(Label = "adrd_count", MainLauncher = true, Icon = "@drawable/icon")] 
    public class MainActivity : ListActivity { 

     static readonly List<int> savedCounters = new List<int>(); 


     protected override void OnCreate(Bundle bundle) { 
      base.OnCreate(bundle); 
      // Set our view from the "main" layout resource 
      // SetContentView (Resource.Layout.Main); 

      savedCounters.Add(3); 
      savedCounters.Add(2342); 
      savedCounters.Add(-122211); 
      savedCounters.Add(9); 
      savedCounters.Add(1941); 

      ListAdapter = new ArrayAdapter<int>(this, Android.Resource.Layout.SimpleListItem1, savedCounters); 



     } 

     protected override void OnListItemClick(ListView l, View v, int position, long id) { 
      var t = savedCounters[position]; 
      var intent = new Intent(this, typeof(Counter)); 
      intent.PutIntegerArrayListExtra("saved_counter", savedCounters); 

      StartActivity(intent); 
     } 
    } 
} 

今私に遊説何がこの行があることですC#でコード化しています... Javaではありません。私の知る限り、C#にはIntegerのようなものは何もありません。言葉の壁を越えたエラーは、私が何かひどく間違ったことをしていると思います。私はちょうどそれを誤って読んでいますか?私はいつもJavaでプログラミングしていますか?私は何をしますか?

+1

がsavedCountersを試してみてください。 ToArray() –

答えて

0

Java.Lang.Integerを使用して、一般的なC#のList<T>を作成し、それがPutIntegerArrayListExtra経由Intentに割り当てることができます

var intList = new List<Integer>() { (Integer)0, (Integer)1 }; 
~~~~ 
intent.PutIntegerArrayListExtra("saved_counter", intList); 

Intentを構築する場合、あなたはC#のオブジェクトとそのラッパー経由でJavaベースのオブジェクトと相互作用しているとArt/DalvikとMonoという2つのVM上にある2つの "ピア"オブジェクトを持っています。したがって、はい、そのオブジェクトにはJavaルールが適用されますが、コンバージョンが組み込まれています....

0

C#Json.Netを使用すると、リストまたはオブジェクトをインテントとして渡すことができます。

任意のオブジェクトは、その後、あなたが戻ってあなたのリスト<に変換することができJSON.Net

string listAsString = JsonConvert.SerializeObject(item); 
intent.PutExtra ("saved_counter", listAsString); 

を使用して文字列(JSON文字列)にシリアライズすることができます>として、次のとおりです。

string listAsString = Intent.GetStringExtra ("saved_counter"); 
List<Integer> savedCounter JsonConvert.DeserializeObject<List<Integer>> (listAsString); 
関連する問題