我想将对象传递给新活动 来自MainActivity
NetworkHandler nH=new NetworkHandler();
nH
是我自己创建的类,我希望将此对象发送到新活动
答案 0 :(得分:1)
两个可能的答案
你不能:因为你无法将对象从一个活动传递到另一个活动(除非它是Parcelable)在android
您可以:您可以使用shared preferences
将原始数据从一个活动传递到另一个活动或者您可以使用单个实例(单个)类来设置/获取{{1从一个地方到另一个地方。
答案 1 :(得分:0)
开始新活动时,您的意图可以携带数据:
public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
}
问题是,该意图只能携带原始的Serializable
或Parcelable
数据类型。如果您有非可序列化的对象,例如网络套接字,则无法通过Intent
附加功能发送它们。在这种情况下,您可能希望启动Service
保存复杂数据(套接字,资源处理程序等)并在新活动中绑定到该服务。
查看这些资源:
答案 2 :(得分:0)
如果它与网络有关,那么它应该是自己的线程。
但是我可能会在我的应用的application
中处理它,这样它就可以用于所有活动。
答案 3 :(得分:0)
您可以创建一个扩展Application类的类,并在其中创建该对象的单例。这样,您就可以在所有活动中访问此对象。
public class GlobalClass extends Application {
NetworkHandler nH = null;
public NetworkHandler getNetworkHandler() {
if (nH == null) {
nH = new NetworkHandler();
}
return nH;
}
}
在您的AndroidManifest.xml中提及您的类名称
<application
android:name=".GlobalClass " >
您可以使用以下代码在任何类中访问此对象。
GlobalClass gObj = (GlobalClass) this.getApplication();
NetworkHandler nH = gObj.getNetworkHandler()
答案 4 :(得分:0)
如果NetworkHandler是Serializable,您可以序列化对象并将其传递给另一个Activity
class NetworkHandler implements Serializable{
....
}
以这种方式将其传递给另一个活动
Bundle bundleObject = new Bundle();
Intent i = new Intent(this,SecondActivity.class);
bundleObject.putSerializable(KEY, (Serializable) new NetworkHandler ());
i.putExtras(bundleObject);
startActivity(i);
在第二项活动onCreate get objet
Bundle bundleObject = getIntent().getExtras();
NetworkHandler nh = (NetworkHandler)
bundleObject.getSerializable
(KEY);
您还可以将Parcelable接口实现为NetworkHandler。