我有三个活动。第一和第二活动有一个按钮"doProcess"。第三个活动执行一些流程。我想做下一个场景(在伪代码中):
Scenary 1:
1) in FirstActivity click button "doProcess";
2) run ThirdActivity, put FirstActivity in backstack;
3)
if operation finish successful
destroy FirstActivity;
run SecondActivity and put here result;
destroy ThirdActivity;
else
back to FirstActivity;
destroy ThirdActivity;
Scenary 2:
1) in SecondActivity click button "doProcess";
2) run ThirdActivity, put SecondActivity in backstack;
3)
if operation finish successful
back to SecondActivity and put here result;
destroy ThirdActivity;
else
back to SecondActivity;
destroy ThirdActivity;
你能解释一下我需要从每个活动调用什么方法来运行我需要的其他活动吗?我理解,对于场景2,我可以从SecondActivity运行startActivityForResult()
并覆盖onActivityResult()
。在ThirdActivity中,我调用setResult()
方法。
onActivityResult(...)
在onResume()
之前被系统调用,这就是为什么我们可以将意图从thirdActivity重定向到secondActivity。
下面是代码。在onCreateView()
中,我们从startActivityForResult()
开始第二个活动。当结果由secondActivity返回时,将运行一个onActivityResult()
。在这个方法中,我们从意图中获取结果,称为data,然后把它放到一个新的意图中。然后我们通过调用startActivity()
来启动带有这个意图的secondActivity。
import android.app.*;
import android.os.*;
import android.view.*;
import android.content.*;
public class FirstFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
scanBarcodeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mContext, ThirdActivity.class);
startActivityForResult(intent, 1);
}
});
...
}
// intent redirecting
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(data == null) {
return;
}
Intent intent = new Intent(mContext, SecondActivity.class);
...
intent.putExtra(...);
startActivity(intent);
}
}