将ArrayList活动传递给Activity

时间:2012-05-26 13:13:43

标签: android android-activity

在我的代码中启动karsilastir活动时,我总是得到nullPointerException 这里发送活动代码:

  karsilastir.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                Intent intent_notify=new Intent();
                intent_notify.setClass(Evraka1Activity.this,karsilastir.class);

             Bundle bundle=new Bundle();

                 bundle.putStringArrayList("urunler", urunler);

                 intent_notify.putExtra("urunler",bundle);

                 //startService(intent_notify);
                 startActivity(intent_notify);
}

这里收到活动代码:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.karsilastirmasonuclari);
        Intent intent = getIntent();

        Bundle b = intent.getExtras();
       gelenurunler = b.getStringArrayList("urunler"); 
}

2 个答案:

答案 0 :(得分:2)

这取决于arraylist的类型(从here复制)

  1. putIntegerArrayListExtra(String name,ArrayList value)
  2. putParcelableArrayListExtra(String name,ArrayList value)
  3. putStringArrayListExtra(String name,ArrayList value)
  4. putCharSequenceArrayListExtra(String name,ArrayList value)
  5. 然后你可以通过将带有键字符串作为参数的put替换为put来读取下一个活动,例如

    myIntent.getStringArrayListExtra("arrayPeople");
    

    <强>更新::

    Intent i = new Intent(this,name.class);
    Bundle b = new Bundle();
    b.putIntegerArrayListExtra(String name, ArrayList<Integer> value);
    i.putExtra(String name,b);
    startActivity(i);
    

    将数据导入另一项活动,如

    Bundle b = getIntent().getExtra().putParcelableArrayListExtra(String name);   
    

答案 1 :(得分:0)

在类的顶部创建一个成员字段局部变量。 m表示成员字段,是Android编码样式标准的一部分。查看Android Notepad教程以供参考。

http://developer.android.com/resources/tutorials/notepad/notepad-ex2.html

public class karsilastir extends ListActivity {

/* Create an instance variable just below the class constructor. */    
ArrayList mUrunler;

....

karsilastir.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            Intent intent_notify=new Intent();
            intent_notify.setClass(Evraka1Activity.this,karsilastir.class);

         Bundle bundle=new Bundle();

             bundle.putStringArrayList("urunler", mUrunler);

             intent_notify.putExtra("urunler",bundle);

             //startService(intent_notify);
             startActivity(intent_notify);
        }
    }