簡體   English   中英

Android:將附加內容更改為意圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM