web-dev-qa-db-de.com

Wie kann ich OnActivityResult in Fragment aufrufen und wie funktioniert es?

Ich möchte wissen, ob es möglich ist, onActivityResult() in Fragment zu verwenden, und wenn ja, wie es funktioniert, erklären Sie es bitte anhand eines Beispiels.

15
Shweta Nandha

Sie würden anrufen:

startActivityForResult(i, 1);

und dann:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
   //super.onActivityResult(requestCode, resultCode, data); comment this unless you want to pass your result to the activity.
}
18
HaroldSer

Auf jeden Fall wird es funktionieren, es funktioniert genauso wie bei Aktivitäten. Sie haben startActivityForResult(intent, requestCode); Und erhalten normalerweise ein Ergebnis 

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
}
3
Ajeet Choudhary

Ja, Sie können OnActivityResult innerhalb von Fragment verwenden

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
// perform your action here
}

jetzt rufen Sie onActivityResult so auf

getActivity().startActivityForResult(). 

EDIT

Die obige Antwort ist alt 

Überprüfen Sie hier die aktualisierte Antwort https://stackoverflow.com/a/17085889/7666442

2
Nilesh Rathod

wenn Sie startActivityForResult() in fragment aufrufen, wird das Ergebnis an die übergeordnete Aktivität geliefert.

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);//will deliver result to desired fragment.
}

Wie funktioniert das?

wenn Sie requestCode in activity sehen, wird es jetzt wie 655545 sein 

super.onActivityResult () berechnet das gewünschte Fragment und den Anforderungscode.

wenn Ihr Fragment in ViewPager den gewünschten Fragment-Index gefunden hat, verwenden Sie 

requestCode>>16

und requestCode wird von requestCode&0xffff gefunden. 

1
Rahul Devanavar

Verwenden Sie diesen Code in der Aktivität.

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);
    Fragment fragment = (Fragment) getSupportFragmentManager().findFragmentByTag(childTag);
    if (fragment != null) {
        fragment.onActivityResult(requestCode, resultCode, intent);
    }
}
1
Android Geek