有没有类似setResult()的方法?

我是新来的android。 我正在使用一个片段。 我在onResult()方法中得到一个错误。 我需要一个替代方法setResult(RESULT_OK,数据),我可以在我的片段中使用。 请帮忙。

CalendarFragment

package app.pal.study.samplestudy; import android.app.Fragment; 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 { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_calendar, container, false); return rootView; } @Override public void onResume() { super.onResume(); refresh(); } private void refresh() { CalendarEventDataSource dataSource = new CalendarEventDataSource(getActivity()); dataSource.openReadOnlyDB(); final List<CalendarEvent> calendarEvents = dataSource.getAllEvents(); dataSource.close(); CalAllEventsListAdapter adapter = new CalAllEventsListAdapter(calendarEvents); ListView listView = (ListView) getView().findViewById(R.id.all_event_list); listView.setAdapter(adapter); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { end(); return true; } return super.onOptionsItemSelected(item); } public void onBackPressed() { end(); } private void end() { Intent data = new Intent(); data.putExtra(Constants.DATE_KEY, (Date)(getArguments().get(Constants.DATE_KEY))); setResult(RESULT_OK, data); } } 

Solutions Collecting From Web of "有没有类似setResult()的方法?"

你应该把它叫做片段拥有活动:

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

你也可能想完成你的活动:

  getActivity().finish(); 

如果你从另一个片段开始你的片段。

你需要使用:

 /** * 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) { } 

当开始你的片段。

喜欢这个:

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

然后,在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); 

用这个可能对你有帮助..

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

使用

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