我有一些類實現某種視覺片段。 (我稱他們爲ApetWidgets。) 他們有自己的類層次結構。開始一個活動並從一個非活動的descadent類捕獲結果
public class SignatureApetWidget extends AbstractApetWidget {
private void startCapture(ApetActivity act) {
Intent intent = new Intent(act, SignatureCaptureActivity.class);
intent.putExtra(...);
act.startActivityForResult(intent, CAPTURE_SIGNATURE_REQUEST);
}
其中一個應該開始另一個Activity並等待結果。但是,儘管我有對包含小部件的活動的引用,儘管我可以調用parentActivity的startActivityForResult,但我無法攔截結果,因爲這也會導致父活動。
我可以通過它捕獲結果,並將處理委託給我的窗口小部件,但這似乎是一種不好的做法,因爲我必須將窗口小部件特定的邏輯從窗口小部件移動到活動,更重要的是:我會必須在我計劃使用小部件的所有活動類中實施此委派)。
我知道如何(至少我知道一種方式)開始其他活動。 (它工作正常。)但是,我沒有從它得到任何結果。 擴展並繼承自Activity或任何其他類不是一個選項(我的小部件具有自己的類層次結構)。
所以我的問題是:我怎麼能從一個非活動類中的結果開始一個活動,而不會嚴重推斷封裝子句?
感謝, 巴拉熱
謝謝你的回答,片段將是完美的工具,但我無法使用它:我必須成爲API級別7的complient,它被引入到級別11中。(另一個原因是個人的:它需要一個很多重構在當前的開發狀態中移動到碎片。) 但是,我想感謝您指出了這一新功能! – Balage1551 2012-01-09 23:06:49
不正確,作爲android SDK下載的一部分存在兼容性庫。這將讓你支持所有的方式回到1.6,看看這個鏈接:http://developer.android.com/sdk/compatibility-library.html通過包括這個jar你可以使用Fragment API,我使用它,它的工作原理大。此外:http://android-developers.blogspot.com/2011/03/fragments-for-all.html – sgarman 2012-01-09 23:15:58