使用 Intent.FLAG_ACTIVITY_SINGLE_TOP 和 CLEAR_TOP 时附加功能未通过

jha*_*ane 4 android android-intent android-activity

doneButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if(!imgUriList.isEmpty())
            {
                    Intent intent = new Intent(getBaseContext(), createAdActivity.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imgUriList);
                    startActivity(intent);


            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

这是我在第二个活动中使用的代码,用于将额外内容发送到第一个活动。

我想在从第二个活动回来时保持第一个活动的原样。因此我使用了_SINGLE_TOP,CLEAR_TOP FLAGS。

没有标志它工作得很好。但是使用了 extras 后 extras 就变成空了。这是我在第一个活动中使用的代码。

 @Override
    protected void onResume() {
        super.onResume();
        Toast.makeText(this,"IN RESUME ",Toast.LENGTH_LONG).show();
        imageUris = getIntent().getParcelableArrayListExtra(Intent.EXTRA_STREAM);
        if(getIntent().hasExtra(Intent.EXTRA_STREAM)) {
            if (!imageUris.isEmpty()) {
                createAdViewPagerAdapter viewpager = new createAdViewPagerAdapter(this,imageUris);
                photoViewer.setAdapter(viewpager);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

由于第一个活动还使用了从 MainActivity 发送的一些额外内容,因此我也覆盖了 onNewIntent() 方法。

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
}
Run Code Online (Sandbox Code Playgroud)

ADM*_*ADM 6

有了你,你就会得到处理 的意图参数所需的getIntent()旧内容。您可以使用它将更改返回的意图。为了确保任何进一步的调用都会返回最新的意图,请使用 .IntentonNewIntent()setIntent(intent)getIntent()getIntent()setIntent()

 @Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
   // Do further stuff here
}
Run Code Online (Sandbox Code Playgroud)