J'utilise un fragment. Je reçois une erreur dans la méthode onResult()
. J'ai besoin d'une méthode de remplacement pour setResult(RESULT_OK, data)
que je puisse utiliser dans mon fragment. S'il vous plaît aider.
CalendrierFragment:
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);
}
}
Vous devriez l'appeler sur votre activité propriétaire de fragment:
getActivity().setResult(Activity.RESULT_OK, data)
aussi vous voudrez peut-être terminer votre activité:
getActivity().finish();
Si vous démarrez votre fragment à partir d'un autre fragment.
Vous devez utiliser:
/**
* 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) {
}
Au début de votre fragment.
Comme ça:
Fragment newFragment = new YourFragment();
newFragment .setTargetFragment(this, SOME_REQUEST_INT);
Et ensuite, dans YourFragment
Intent data = new Intent();
data.putExtra(Constants.DATE_KEY, (Date)(getArguments().get(Constants.DATE_KEY)));
getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, intent);
Ou
getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_CANCELED, null);
Utilisation
getActivity().setResult(Activity.RESULT_OK, data);
Utilisez ceci il peut être une aide pour vous ..
getActivity().setResult(Activity.RESULT_OK, data);