2012-09-16 470 views

回答

0

我建議你閱讀Task and Back Stack

一開始,在android系統的活動投入了稱爲棧上,如果我沒記錯的話,活動堆棧。當你開始一個活動,你可以添加一個Intent標誌,該標誌將影響堆棧,像

addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)

我認爲我做了什麼你試圖之前做(我不是確定我用了什麼標誌,但很久以前:p)。但只要閱讀有關活動任務以瞭解什麼意圖標誌適合您正在嘗試執行的操作。

+0

感謝您的回覆! 理解任務和返回堆棧的不錯教程。但根據我的要求,沒有找到任何匹配的意圖標誌來完成來自子活動的父活動。在這裏,這是一個在家長活動中宣佈的活動。 –

0

活動A - >活動B, 刪除活動A,

如果這是你在找什麼

Intent intent = new Intent(this, B.class); 
    startActivity(intent); 
    finish(); 
+1

感謝您的回覆!但我想完成從兒童活動的父母活動。 –

+1

@sunny在回答之前,請正確地閱讀問題。 – sud007

1

從孩子的活動,嘗試使用它返回使用getParent()方法父母的活動,並完成()它!

+2

getParent()調用僅適用於嵌入式活動,例如,活動組(現已棄用)。對於常規活動,getParent()將始終返回null。 –

1

活動回棧的工作方式就像一個堆棧,即您可以彈出並將活動推送到其上。如果不先刪除棧上的活動,則無法從棧中刪除活動。因此,如果孩子沒有完成自己的事情,就完成父母的活動是不可能的。

通過使用launchmodesIntent flags,可以使用幾種方法重新排序或清除活動返回堆棧。

1

創建上下文的靜態變量,如 static Context cntxofParent;在ParentActivity

然後初始化像

在父Activiy該參考

cntxofParent = ParentActivityName.this;

當你在孩子的活動,然後收集這方面都丟如下活動,

活動parentActivity;

parentActivity =(Activity)cntxofParent;

0

從子活動中完成父活動而不完成子活動不是一項複雜的任務...您必須在父活動中聲明一個活動變量。

static HomeScreen firstActivity; //Activity Variable 

In oncreate method assign the variable 

firstActivity=this; 

public static HomeScreen getActivity() 
{ 
    return firstActivity; 
} 

並訪問子活動的父活動變..

HomeScreen.getActivity.finish(); 

更多詳情請點擊here

+0

靜態存儲活動會導致內存泄漏,如果你這樣做至少使用弱引用 –

相關問題