SORU
23 Mart 2010, Salı


Nasıl bir sonuç (startActivityForResult) TabHost bir etkinlikten geri dönmek için?

Benim örnekte 3 ders var: Sınıf, ana faaliyet. A sınıfı bir startActivityForResult çağırır:

Intent intent = new Intent(this, ClassB.class);
startActivityForResult(intent, "STRING");

B sınıfı, bu sınıfın bir TabActivity

Intent intent = new Intent(this, ClassC.class);
tabHost.addTab...

C sınıfı, bu sınıfın normal bir Aktivite

Intent intent = this.getIntent();
intent.putExtra("SOMETHING", "EXTRAS");
this.setResult(RESULT_OK, intent);
finish();

onActivityResult Sınıf denir, ama resultCode RESULT_OK yerine RESULT_CANCELED ve iade niyet null. Nasıl bir TabHost içinde etkinliğinden bir şey iade edebilirim?

Fark ettim ki sorun benim C Sınıfı aslında çalışan içinde B Sınıfı ve B Sınıfı budur dönen RESULT_CANCELED geri A Sınıfı hiç bilmem. geçici bir çözüm henüz.

CEVAP
12 NİSAN 2010, PAZARTESİ


Oh, Tanrım! Birkaç saat harcama ve Android kaynakları indirdikten sonra, nihayet bir çözüm için geldim.

Eğer Aktivite sınıfı bakarsanız, finish() yöntem yalnızca null 12 *özellik kümesi varsa sonucu geri gönderdiği göreceksiniz. Aksi takdirde sonuç kaybolur.

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);
    }
}

Benim çözüm bu gibi varsa ana faaliyeti sonucu ayarlamak için:

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

Eğer birisi bu sorun için çözüm yine görünüyorsa yararlı olacağını umuyoruz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Nickcidious

    Nickcidious

    6 HAZİRAN 2011
  • RomanAtwood

    RomanAtwood

    18 Kasım 2009
  • STITCHLESS TV how to sew your own style tutorials

    STITCHLESS T

    9 HAZİRAN 2011