即使更新,意图附加功能也保持不变

squ*_*les 8 android android-intent

我试图在Activity使用Intent附加功能的实例之间传递一小段文本.

每当我使用操作栏中的后退按钮或导航在它们之间导航时,这似乎工作正常.但是,如果我访问主屏幕然后重新启动应用程序,则会忽略传递的额外内容; 第二个Activity似乎使用旧的Intent,而不是新的.

相关代码:

来源活动

public class ActivityA extends Activity {
    protected void goToResults(String results) {
        Intent intent = new Intent(this, ActivityB.class);
        intent.putExtra(Intent.EXTRA_TEXT, results);
        startActivity(intent);
    }
}
Run Code Online (Sandbox Code Playgroud)

目的地活动

public class ActivityB extends Activity {
    @Override
    public void onResume() {
        super.onResume();
        Bundle extras = getIntent().getExtras();
        String results = extras.getString(Intent.EXTRA_TEXT);
        // etc
    }
 }
Run Code Online (Sandbox Code Playgroud)

我尝试了很多不同的东西,包括:

intent.setAction("action-" + UNIQUE_ID);
Run Code Online (Sandbox Code Playgroud)

(据我所知,Intent实例不按额外内容进行比较)

PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Run Code Online (Sandbox Code Playgroud)

(我不需要PendingIntent,但认为这可能会迫使Intent更新)

有关如何在Intent每次从ActivityA- > 转换时强制显示已更改数据的任何建议ActivityB,无论我是使用后退按钮还是转移到主屏幕?

Lau*_*auw 18

我记得曾经遇到过这个问题,我们通过将Intent.FLAG_ACTIVITY_CLEAR_TOP添加到您发送的意图来解决它:

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Run Code Online (Sandbox Code Playgroud)

或者通过在您想要启动的活动中实施以下方法:

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

我不是100%肯定再次修复它,相信它是添加onNewIntent方法.祝你好运,保持联系.