[英]Android: Changing extras to an intent
我有一個應用程序可以在許多不同的活動之間進行。 一項活動,我的主要活動,其行為取決於應用程序中的哪個活動啟動了主要活動。 我想我可以通過讓所有其他活動在意圖中添加一個名為“launchehdFrom”的額外內容來記錄這一點,其中包含一個名為主活動的 hte 活動名稱的字符串。 我遇到的問題是,一旦設置了該值,它就不能被另一個活動覆蓋。 我還沒有找到一個很好的直接方法來做到這一點。 有什么建議嗎??
在我的主要活動中從 onResume() 調用以下代碼:
private void processIntentRequest(){
Intent intent = getIntent();
ProcessIntentRequestType caller = (ProcessIntentRequestType)intent.getSerializableExtra("launchedFrom");
switch(caller){
case startUpActivity:
load(this.myObj);
break;
case otherActivity:
int uri = integer.parseInt(this.getIntent().getExtras().getString("uri"));
load(this.myObj, uri);
break;
default:
load(this.myObj, 1);
}
這是第一次啟動主要活動的代碼:
public void launchMainActivity(Obj myObj){
Intent launchMain = new Intent(this, mainActivity.class);
login.putExtra("launchedFrom", ProcessIntentRequestType.startupActivity);
startActivity(launchMain);
}
這是在啟動活動至少加載一次后從其他活動啟動主要活動的代碼:
protected void launchMainActivity(Obj myObj, HelperObj helper) {
String uri = helper.uri;
Intent mainActivity = new Intent(this, MainActivity.class);
mainActivity.putExtra("uri", uri);
mainActivityputExtra("launchedFrom", ProcessIntentRequestType.otherActivity);
startActivity(mainActivity.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT));
finish();
}
您在調用 startActivity 時使用了 FLAG_ACTIVITY_SINGLE_TOP ,它有一些值得注意的行為。 在這種情況下,覆蓋onNewIntent
並從那里調用setIntent
。 之后,平台將調用onResume
並且您對getIntent
的調用將返回新的意圖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.