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
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.
Nasıl bir VBA Fonksiyon bir sonuç geri...
Nasıl geri düğmesi web görünümü basıld...
Nasıl (Geri) elinize sağlık bir iade 2...
Java nasıl bir yöntem birden fazla nes...
Bir oluşturmak için '' eğer ...