2016-11-08 2 views
0

Ich habe ein Fragment in einem Registerkarten-Aktivität.Es leitet von onclicklistener zu einer Aktivität.Nach Änderungen in dieser Aktivität.User wird zurück drücken Schaltfläche.So in meinem Fragment ich Ich brauche einen Listener, der ausgelöst wird, nachdem ich von dieser Aktivität zurückgekehrt bin. Oder vielleicht, nachdem der Benutzer die Änderungen vorgenommen hat, gebe ich dem Benutzer eine Schaltfläche, um zu diesem Fragment zurückzukehren und das Fragment zwischenzeitlich neu zu laden. Ich versuchte onResume() onStart() auf jede Sache nicht funktioniert, weil nichts passiert in dieser Transaktion zu fragmentieren. Ich habe versucht, addOnBackStackChangedListener(), aber es sollte in der Aktivität nicht Fragment platziert werden. so weiß ich nicht, was zu tun ist? Dank für Ihre Zeitaktualisieren Fragment, das zu Aktivität nach Zurück in dieser Aktivität gegangen

public static class PlaceholderFragment extends Fragment { 
    /** 
    * The fragment argument representing the section number for this 
    * fragment. 
    */ 
    private static final String ARG_SECTION_NUMBER = "section_number"; 

    /** 
    * Returns a new instance of this fragment for the given section 
    * number. 
    */ 
    public static PlaceholderFragment newInstance(int sectionNumber) { 
     PlaceholderFragment fragment = new PlaceholderFragment(); 
     Bundle args = new Bundle(); 
     args.putInt(ARG_SECTION_NUMBER, sectionNumber); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          final Bundle savedInstanceState) { 
     final View rootView = inflater.inflate(R.layout.fragment_history, container, false); 
     getFragmentManager().addOnBackStackChangedListener(
       new FragmentManager.OnBackStackChangedListener() { 
        @Override 
        public void onBackStackChanged() { 
         getFragmentManager().beginTransaction().detach(getTargetFragment()).attach(getTargetFragment()).commit(); 
        } 
       }); 
     //TextView textView = (TextView) rootView.findViewById(R.id.section_label); 
     //textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER))); 
     return rootView; 
    } 

    @Override 
    public void onStart() { 
     super.onResume(); 
     getFragmentManager().beginTransaction().detach(this).attach(this).commit(); 
    } 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getFragmentManager().beginTransaction().detach(this).attach(this).commit(); 
    } 

Antwort

0

Nehmen wir an, Sie haben zwei zwei Aktivitäten A und B. Anfangsfragment f1 wird zu A hinzugefügt. Wenn Sie auf Element in f1 klicken, starten Sie Aktivität B mit startActivityForResult (intent int, int requestCode) und in onActivityResult (int requestCode, int resultCode, Intent data) aktualisieren entweder die Fragmentdaten (wenn möglich) oder laden das Fragment neu.

0

hatte ich das gleiche Problem für eine Listenansicht nach Benutzer ein Element als Favorit aus und drücken Sie wieder ich hoffe, dass es für Sie arbeiten:

Wenn Sie eine Aktivität innerhalb eines geöffnet fragmentieren es auf Pause gehen und wenn Sie Zurück-Taste drücken, wird die onResume ausgeführt werden, so rief ich meine Methode wieder in onResume Methode wie folgt:

@Override 
public void onResume() { 
    super.onResume(); 
    storedfavoritesitem = FavoriteModel.getAllFavorites(); 
    if (storedfavoritesitem.size() == 0) { 
     nolist.setVisibility(View.VISIBLE); 
     nolist.setText("Tu Lista de Favoritos está vacía ;)"); 
    } 
    if (adapter!=null && currentLocation!=null) { 
     mResualt.clear(); 
     for (int i = 0; i < storedfavoritesitem.size(); i++) { 
      FavoriteModel Faveitem = storedfavoritesitem.get(i); 
      String locality = Faveitem.name; 
      String cityname = Faveitem.city; 
      int id = Faveitem.id; 
      double lat = Faveitem.lat; 
      double lon = Faveitem.lon; 
      Location location = new Location("Beach"); 
      location.setLatitude(lat); 
      location.setLongitude(lon); 
      float distance = currentLocation.distanceTo(location); 
      mResualt.add(new SearchResualtClass(id, distance/1000, locality, cityname)); 
     } 
     adapter.notifyDataSetChanged(); 
    } 
} 

prost!

Verwandte Themen