我试图在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 …
我在点击按钮时设置闹钟.
警报是通过意图触发的.
这个意图得到一个额外的"int"传递给广播接收器.
问题是,第一次点击按钮时,意图的额外设置会被设置一次,而其他点击则不会改变:
Intent intent = new Intent(A.this, B.class);
intent.putExtra(WAKEUP_DURATION, wakeUpDuration);
PendingIntent sender = PendingIntent.getBroadcast(A.this, 0, intent, 0);
Run Code Online (Sandbox Code Playgroud)
我尝试在广播接收器中删除它,但没有运气:
intent.removeExtra(A.WAKEUP_DURATION);
Run Code Online (Sandbox Code Playgroud)