【问题标题】:Run third Activity from first Activity, and the third Activity must run second or back to first从第一个 Activity 运行第三个 Activity,并且第三个 Activity 必须运行第二个或回到第一个
【发布时间】:2015-08-16 11:18:19
【问题描述】:

我有三个活动。第一个和第二个活动有一个按钮“doProcess”。第三个活动执行一些过程。我想做下一个场景(伪代码):

场景一:

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;

场景 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() 方法。但我不明白如何做场景 1。

【问题讨论】:

    标签: android-intent android-activity start-activity


    【解决方案1】:

    onActivityResult(...) 在onResume() 之前由系统调用,这就是我们可以将意图从 thirdActivity 重定向到 secondActivity 的原因。

    这里是代码。在onCreateView() 中,我们以startActivityForResult() 开始第二个活动。当 secondActivity 返回结果时,将运行一个onActivityResult()。在这种方法中,我们从意图中获取结果,称为数据,然后将其放入新的意图中。然后我们通过调用 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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-05
      • 2015-06-02
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多