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

  • 0TACTICAL0HIPPY0

    0TACTICAL0HI

    30 EYLÜL 2012
  • colacas

    colacas

    29 EKİM 2006
  • KliptOut KwazeeKilla

    KliptOut Kwa

    24 ŞUBAT 2010