【发布时间】:2011-02-09 12:10:51
【问题描述】:
假设我有一个类 first.java(活动类),我在这个类(second.java - 活动类)中启动另一个活动。
如何从 second.java 访问 first.java 的实例?
谁能给我一个很好的解释...一个例子会很棒...
【问题讨论】:
标签: android android-activity parent
假设我有一个类 first.java(活动类),我在这个类(second.java - 活动类)中启动另一个活动。
如何从 second.java 访问 first.java 的实例?
谁能给我一个很好的解释...一个例子会很棒...
【问题讨论】:
标签: android android-activity parent
如果您需要您的第二个活动将一些数据返回到您的第一个活动,我建议您使用 startActivityForResult() 开始您的第二个活动。然后在您的第一个活动中的 onResult() 中,您可以完成所需的工作。
在您启动 Second.java 的 First.java 中:
Intent intent = new Intent(this, Second.class);
int requestCode = 1; // Or some number you choose
startActivityForResult(intent, requestCode);
结果方法:
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
// Collect data from the intent and use it
String value = data.getString("someValue");
}
在 Second.java 中:
Intent intent = new Intent();
intent.putExtra("someValue", "data");
setResult(RESULT_OK, intent);
finish();
如果您不希望在第一个活动中做一些工作之前等待第二个活动结束,您可以改为发送一个广播,第一个活动对此做出反应。
【讨论】:
您可以简单地从子活动中调用getParent()。
我不知道为什么其他答案如此复杂。
【讨论】:
startActivity 启动SecondActivity,那么它们之间就没有“父子”关系。您可以将startActivityForResult 用于回调机制。或者分享一些可以观察到的单例。类似的东西。
只有这样才能工作
class first
{
public static first instance;
oncreate()
{
instance = this;
}
}
first.instance 是可以从第二类访问的必需的东西
【讨论】:
如果这行得通,试试这个 4 u.........
像这样.....
class first
{
public static first instance;
oncreate()
{
instance=this;
}
public static getInstance()
{
return instance;
}
}
现在从第二类调用 first.getInstance();
你也可以像 first.instance 一样以静态方式直接访问实例......
谢谢...
【讨论】:
Activity。我真的不认为持有 static 引用和 getInstance() 方法是正确的方法,因为您正在颠覆 Activity 生命周期。
您不能直接创建活动。 在第一个活动中,采用这样的静态活动变量,
public static Activity activity;
在 onCreate 中执行此操作。
activity = this;
然后在第二个活动中这样做,
Activity activity = (your activity name).activity;
编辑: 对于将数据从一个活动传递到另一个活动,这不是方法。 上面的答案是从最初询问的其他活动中获取活动实例。
要将数据从一个活动传递到另一个活动,通常使用捆绑。但如果数据不是原始数据类型,则使用对象类,该对象类应实现可打包或可序列化接口。然后通过 bundle only parcelable list of objects 我们可以传递。
【讨论】: