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

  • arnejann

    arnejann

    3 Kasım 2007
  • Jana Williams

    Jana William

    17 AĞUSTOS 2011
  • The Pet Collective

    The Pet Coll

    5 Ocak 2012