从第一个活动运行第三个活动,第三个活动必须运行第二个或返回到第一个



我有三个活动。第一和第二活动有一个按钮"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);
    }
}

相关内容

最新更新