2013-01-02 17 views
13

Activity numaralı telefonu Activity numaralı telefondan startActivityForResult(intent, requestCode) ile başlatıyorum. Kullanıcı Activity'a geri döndüğünde, geri tepme düğmesine bastığında orijinal Activity verisine dönmek istiyorum. (resultCodeonActivityResult() yılında RESULT_OK değil)Etkinlik geri döndürme ile kapatıldığında niyet sonucu döndürme

@Override 
protected void onPause() { 
    super.onPause(); 

    Intent intent = new Intent(); 
    intent.putIntegerArrayListExtra(SELECTION_LIST, selected); 
    setResult(RESULT_OK, intent); 
} 

Maalesef bunların hiçbiri çalıştı:

  • onBackPressed() basan:

    @Override 
    public void onBackPressed() { 
        super.onBackPressed(); 
    
        Intent intent = new Intent(); 
        intent.putIntegerArrayListExtra(SELECTION_LIST, selected); 
        setResult(RESULT_OK, intent); 
    } 
    
  • onPause() basan ben iki yöntem denedi . Bunu yapmanın doğru yolu nedir? Teşekkürler!

cevap

7

den

onActivityResult(int requestCode, int resultCode, Intent data) Yöntem geçersiz kılma İki yıl önce kabul ettiğimden, tip için MasterGaurav için teşekkürler.

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(); 
    intent.putIntegerArrayListExtra(SELECTION_LIST, selected); 
    setResult(RESULT_OK, intent); 

    super.onBackPressed(); 
} 
1

bu deneyin: kullanıcı orijinal Faaliyet Verileri döndürmek istediğinizde startActivityForResult(intent, requestCode)

orijinal Etkinliğinizden

@Override 
public void onBackPressed() { 
    // super.onBackPressed(); 

    Intent intent = new Intent(); 
    intent.putIntegerArrayListExtra(SELECTION_LIST, selected); 
    setResult(RESULT_OK, intent); 
    finish(); 
} 
+0

Ne yazık ki, bu çalışmıyor, 'requestCode' hala" RESULT_OK "değil. – WonderCsabo

23

bu deneyin Geri düğmesine basar, bu yüzden orijinal Etkinliğe geri döndüğünde. Eğer Yeni açık Aktivite sonucu GetBack istiyorsanız

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 

    Intent intent = new Intent(); 
    intent.putIntegerArrayListExtra(SELECTION_LIST, selected); 
    setResult(RESULT_OK, intent); 
} 

sadece bu soru hâlâ dikkatini çekmenin olduğundan, ben daha doğru cevabı ilanıyla orijinal Faaliyet

@Override 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    super.onActivityResult(requestCode, resultCode, data); 

} 
+0

Elbette, diğer cevapları da denemek istedim. ;) – WonderCsabo

+0

@WonderCsabo Teşekkürler. :) –

+0

@pratik: Daha sonra ebeveyn etkinliğinde, niyet() OnResume() veya onNewIntent() alırsınız? – Behnam

0

başlat yeni Aktivite:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      onBackPressed(); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
+0

Aslında OP'de yazdığım gibi aynısını yaptım. Bu işe yaramıyor, Pratik'in önerisi olsa da çalışıyor. – WonderCsabo

İlgili konular