我有一个主要活动,它启动另一个活动,然后,主要活动应该从上一个活动接收信息。但是当我完成最新的活动时,我来到第二个,当然不是主要的活动。如何在不开始新的情况下到达那里? 非常感谢,Vinzenz:)
以下是其中的一部分:(编辑)
对不起,但是我没理解。 在我的MainActivity中,我用第二个开始:
@Override
public void onClick(View arg0) {
Intent i = new Intent(getApplicationContext(), SecondActivity.class);
startActivityForResult(i, currentxyzIndex);
}
在第二个活动中,我开始使用另一个:
@Override
public void onClick(View arg0) {
Intent i = new Intent(getApplicationContext(), ThirdActivity.class);
startActivityForResult(i, 100);
finish();
}
在这一个中我想回到第一个:
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
int xyzIndex = position;
Intent in = new Intent(getApplicationContext(),
MainActivity.class);
in.putExtra("xyzIndex", xyzIndex);
setResult(100, in);
finish();
}
答案 0 :(得分:2)
您应该使用SecondActivity
启动startActivityForResult()
并在MainAcitvity onActivityResult()
中覆盖。这样,当您在SecondActivity上调用finish()时,将调用MainActivity的onActivityResult()
。 onActivityResult的签名是
protected void onActivityResult(int requestCode, int resultCode,
Intent data)
如果在您的SecontActivity上finish()
之前,请致电setResult(int, Intent)
,最后一个将是onActivityResult
答案 1 :(得分:1)
我想我现在理解你的问题,但你应该对其进行编辑以使其更清晰。我将总结一下我认为你想做的事情。
有三项活动:A,B和C.
在活动A中,您有一些按钮或视图,当点击该按钮或视图时,将使用startActivityForResult()
打开活动B.
在活动B中,您有一些按钮或视图,当点击该按钮或视图时,将使用startActivityForResult()
打开活动C.
在活动C中,您设置一些数据,设置结果并调用完成,希望返回活动A.
正如黑带所述,您应该在活动中使用onActivityResult(int, int, Intent)
。这应该在使用startActivityForResult()
的每个活动中,即活动A和活动B.
活动A:
onClick() {
startActivityForResult(new Intent(this, ActivityB.class), currentxyzIndex);
}
@Override
onActivityResult(int requestCode, int resultCode, Intent data) {
// this is the data that comes back from Activity B when Activity B calls finish()
// do as you need
}
活动B:
onClick() {
startActivityForResult(new Intent(this, ActivityC.class), 100);
// do not call finish here!
}
@Override
onActivityResult(int requestCode, int resultCode, Intent data) {
// this is the data that comes back from Activity C when Activity C calls finish()
// set the data as the result
setResult(...);
// then you can finish
finish();
}
活动C和你一样,我相信。
您的应用程序架构要求您执行此操作,这有点腥味;也许如果你用关于域的信息和每个Activity的用途(每个用户代表什么)描述你的问题,它可以重新制定。