亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從Tabhost活動返回結果(StartActivityForResult)?

如何從Tabhost活動返回結果(StartActivityForResult)?

守候你守候我 2019-07-10 09:58:28
如何從Tabhost活動返回結果(StartActivityForResult)?我的例子中有三個類:A類,主要活動。類A調用startActivityForResult:Intent intent = new Intent(this, ClassB.class);startActivityForResult(intent, "STRING");B類,這個類是TabActivity:Intent intent = new Intent(this, ClassC.class);tabHost.addTab...C類,這個類是一個常規活動:Intent intent = this.getIntent();intent.putExtra("SOMETHING", "EXTRAS");this.setResult(RESULT_OK, intent);finish();在A類中調用onActivityResult,但結果代碼是RESULT_CANCELED而不是RESULT_OK返回的意圖為空。如何從Tabhost中的活動中返回某些內容?我意識到問題是,我的C類實際上運行在B類內部,而B類是返回RESULT_CANCELED回到A班,我只是還不知道周圍有什么工作。
查看完整描述

3 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

哦,上帝!在花了幾個小時下載Android源代碼之后,我終于找到了解決方案。

如果你看一下活動類,你會發現,finish()方法僅在存在mParent屬性設置為null..否則,結果將丟失。

public void finish() {
    if (mParent == null) {
        int resultCode;
        Intent resultData;
        synchronized (this) {
            resultCode = mResultCode;
            resultData = mResultData;
        }
        if (Config.LOGV) Log.v(TAG, "Finishing self: token=" + mToken);
        try {
            if (ActivityManagerNative.getDefault()
                .finishActivity(mToken, resultCode, resultData)) {
                mFinished = true;
            }
        } catch (RemoteException e) {
            // Empty
        }
    } else {
        mParent.finishFromChild(this);
    }}

因此,如果存在,我的解決方案是將結果設置為父活動,如下所示:

Intent data = new Intent();
 [...]if (getParent() == null) {
    setResult(Activity.RESULT_OK, data);} else {
    getParent().setResult(Activity.RESULT_OK, data);}finish();

我希望這將是有幫助的,如果有人尋找這個問題的解決辦法。


查看完整回答
反對 回復 2019-07-10
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

FLAG_ActivityForward結果?

如果設定并使用此意圖從現有活動啟動新活動,則現有活動的回復目標將轉移到新活動。


查看完整回答
反對 回復 2019-07-10
  • 3 回答
  • 0 關注
  • 504 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號