java – Is there a method like setResult() in fragment?-ThrowExceptions

Exception or error:

I am using a fragment. I am getting an error in the onResult() method. I need a substitute method for setResult(RESULT_OK, data) that I can use in my fragment. Please help.



import android.content .Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import java.util.Date;
import java.util.List;

public class CalendarFragment  extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_calendar, container, false);
    return rootView;

public void onResume() {

private void refresh() {
    CalendarEventDataSource dataSource = new CalendarEventDataSource(getActivity());
    final List<CalendarEvent> calendarEvents = dataSource.getAllEvents();
    CalAllEventsListAdapter adapter = new CalAllEventsListAdapter(calendarEvents);
    ListView listView = (ListView) getView().findViewById(;

public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == {
        return true;
    return super.onOptionsItemSelected(item);

public void onBackPressed() {

private void end() {
    Intent data = new Intent();
    data.putExtra(Constants.DATE_KEY, (Date)(getArguments().get(Constants.DATE_KEY)));
    setResult(RESULT_OK, data);
How to solve:

You should call it on your fragment owning activity:

 getActivity().setResult(Activity.RESULT_OK, data) 

also you might want to finish your activity:



If you starting your fragment from another fragment.

You need to use:

 * Optional target for this fragment.  This may be used, for example,
 * if this fragment is being started by another, and when done wants to
 * give a result back to the first.  The target set here is retained
 * across instances via {@link FragmentManager#putFragment
 * FragmentManager.putFragment()}.
 * @param fragment The fragment that is the target of this one.
 * @param requestCode Optional request code, for convenience if you
 * are going to call back with {@link #onActivityResult(int, int, Intent)}.

public void setTargetFragment(Fragment fragment, int requestCode) {

When starting your Fragment.

Like this:

Fragment newFragment = new YourFragment();
newFragment .setTargetFragment(this, SOME_REQUEST_INT);

And then, in YourFragment

Intent data = new Intent();
data.putExtra(Constants.DATE_KEY, (Date)(getArguments().get(Constants.DATE_KEY)));
getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, intent);


getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_CANCELED, null);


Use this it may be help to you..

getActivity().setResult(Activity.RESULT_OK, data);



getActivity().setResult(Activity.RESULT_OK, data);

Leave a Reply

Your email address will not be published. Required fields are marked *