如何无意地传递对象

时间:2014-07-24 02:18:52

标签: java android

目前,我可以将名为Exhibit的对象传递给另一个Activity,方法是将其放入putExtras并启动intent。现在,如果我想将对象传递给另一个对象怎么办?

例如我这样发送:

public void onListItemClick(ListView parent, View v, int position, long id) { 
    Intent i = new Intent(this, ExhibitOpen.class);
    Bundle bundle = new Bundle();
    bundle.putSerializable("MyClass", (Serializable) exhibits.get(position));
    i.putExtras(bundle);
    startActivity(i);
}

然后我收到:

Intent i = getIntent();
dene = (Exhibit)i.getSerializableExtra("MyClass");

在这里你可以看到我将exhibit.get(position)传递给某个类并将该类作为新活动启动,然后新活动接收它。那么,如何在不启动的情况下将对象传递给另一个类(不是这个类)?

非常感谢!

3 个答案:

答案 0 :(得分:2)

如果您不希望在应用程序启动期间保留您的对象,则可以将其设置为应用程序类的静态实例变量:

public class MyApp extends Application {
    private static Exhibit sExhibit;

    public static void setExhibit(Exhibit exhibit) {
        sExhibit = exhibit;
    }

    public static Exhibit getExhibit() {
        return sHexhibit;
    }
}

// To set the object:
MyApp.setExhibit(myExhibit);

// To retrieve it
Exhibit myExhibit = MyApp.getExhibit()

如果您不想扩展您的应用程序,您可以在任何级别或您的Exhibit模型中执行此操作,只要它更有意义。

如果您希望它在应用启动之间持续存在并且可以序列化,我会使用共享首选项来存储它:http://developer.android.com/guide/topics/data/data-storage.html#pref

答案 1 :(得分:1)

您只需在对象上调用方法:

otherObject.someMethod(dene);

答案 2 :(得分:0)

请检查此LINK1LINK2LINK3