如何将bean类一个活动传递给android上的另一个活动

时间:2012-07-26 07:11:58

标签: android

嗨,这是我的listview onClicklister。

当我点击列表项时,我将从bean类一个活动获取的arraylist传递给另一个活动,如下所示。

但我想知道我们可以将bean类传递给下一个活动吗?

listViewRoutes.setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
          long arg3) {
        RouteBean bean = routeList.get(arg2);
        ArrayList<Double> fromLatitude = bean.getFromLatitude();
        ArrayList<Double> fromLongitude= bean.getFromLongitude();
        ArrayList<Double> toLatitude = bean.getToLatitude();
        ArrayList<Double> toLongitude= bean.getToLongitude();
        Intent intent =new Intent("MapActivityView");
        intent.putExtra("fromLon", fromLongitude);
        intent.putExtra("fromLat", fromLatitude);
        intent.putExtra("toLat", toLatitude);
        intent.putExtra("toLon", toLongitude);
        startActivity(intent);
      }
    });

如果我通过“Route Bean”,我会得到下一个活动的值。

是否可以传递bean类?

4 个答案:

答案 0 :(得分:4)

您可以使用Parcelable类传递对象..

之类的,

public class RouteBean implements Parcelable {

}

一旦你的对象实现了Parcelable,只需用putExtra()将它们放入你的意图:

Intent i = new Intent();
i.putExtra("object", Parcelable_Object);

然后您可以使用getParcelableExtra()

将其撤回
Intent i = getIntent();
RouteBean bean = (RouteBean) i.getParcelableExtra("object");

有关详细信息,请查看此问题How to pass an object from one activity to another on Android

答案 1 :(得分:1)

我认为这是可能的。你必须像这样发送你的类的对象,

   intent.putExtra("RouteBean", bean); 

在下一个活动中检索它,

getIntent().getSerializableExtra("RouteBean");

但是你的班级必须实现Serializable接口。

或者你可以使用Parcelable Interface,

这是一个例子,

https://stackoverflow.com/a/6923794/603744

对于第一种方法,你的类应该是这样的,

public class RouteBean implements Serializable 
{

}

对于下一个,

public class RouteBean implements Parcelable 
{

}

答案 2 :(得分:1)

使您的RouteBean类实现Parcelable接口。然后,您可以将自定义类对象作为意图中的包传递给其他活动。

然后您可以使用 -

类RouteBean实现Parceable 然后在调用意图时。

Bundle bundle = new Bundle();
RouteBean yourObj = new RouteBean();
bundle.putParcelable("bundlename", yourObj);

在下一个活动中,您可以使用

RouteBean yourObj bundle.getParcelable("bundlename");

有关Parceable http://developer.android.com/reference/android/os/Parcelable.html的更多信息。

答案 3 :(得分:0)

是的,您可以通过in1.putExtra("beanObject", bean)完成此操作。

public void onItemClick(AdapterView<?> arg0, View arg1,
                int position, long id) {

            bean = (ActivitiesBean) adapter.getItem(position); //ActivitiesBean is the name of the bean class

            Intent in1 = new Intent(firstclass.this, secondclass.class);
            in1.putExtra("beanObject", bean);
            startActivity(in1);
        }

    });

并将其用于secondclass.java

ActivitiesBean bean =  (ActivitiesBean) getIntent().getSerializableExtra("beanObject");
txt_title.setText(bean.getTitle());  //txt_title is the object of the textview