5

Ich möchte aktualisieren oder aufrufenCreateView im folgenden Code. Ich habe ein contex Menü um einen Artikel zu löschen und nachdem ich das Fragment mit dem neuen Artikel aktualisieren möchte .. Danke an alle!Wie onCreateView Methode aufrufen oder mein Fragment aktualisieren?

public class ItemDetailFragmentBlackBoard erweitert Fragment {

@Override 

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
     .... 
     return rootView; 
} 

}

/** Menu on LongClick */ 
@Override 
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) 
    { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    menu.setHeaderTitle("Context Menu"); 
    menu.add(0, v.getId(), 0, "Delete"); 
} 

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    if(item.getTitle()=="Delete"){ 
     String status=""; 
     AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo(); 
     int posizione = info.position; 
     String[] messaggioDaCancellare= S.getMessaggiInfo().get(posizione); 
     try{ 
      JSONObject del =ProxyUtils.proxyCall("deleteMessage",messaggioDaCancellare[4]); 
      status=del.getString("status"); 
     } catch (Exception e) { 
      Log.i("Eccezione", e.toString()); 
     } 
     Activity activity= getActivity(); 
     if(status.equals("OK")){ 

        **HERE......I would like to refresh my fragment o recall onCreateView method...** 

      Toast.makeText(activity, "Delete avvenuta", Toast.LENGTH_SHORT).show(); 
     }else 
      Toast.makeText(activity, "Delete non riuscita", Toast.LENGTH_SHORT).show(); 
    } else {return false;} 
    return true; 
} 
+0

was versuchen Sie, zu löschen und was wollen Sie – tyczj

+0

aktualisiert werden denke ich, dass Sie wahrscheinlich nur möchte stattdessen ein anderes Fragment installieren ... –

Antwort

2

ich mit sich selbst

mein Problem replecing meine fragmet gelöst

der Code:

{ 

    arguments.putString(ItemDetailFragmentBlackBoard.ARG_ITEM_ID, id); 
    ItemDetailFragmentBlackBoard fragment= new ItemDetailFragmentBlackBoard(); 
    fragment.setArguments(arguments); 
    getFragmentManager().beginTransaction().replace(R.id.item_detail_container, fragment).commit(); 
} 

ItemDetailFragmentBlackBoard ist mein Fragment. Ich lösche ein Item von listView und nachdem ich es gelöscht habe, rufe ich mein Fragment mit dem obigen Code erneut an, so dass ich un refresh bekomme!

4

Es ist besser, eine viewGroup wie ein einfaches linearLayout (Aufrufbildschirm) in der onCreateView-Funktion zu definieren und sie in eine Funktion wie init() einzufügen. Jedes Mal, wenn Sie die Ansicht neu erstellen möchten, entfernen Sie einfach alle untergeordneten Elemente von linearLayout und rufen Sie init() auf.

Sie haben gute Arbeit geleistet, aber es ist teurer als meine einfache Lösung.

0
public class ItemDetailFragmentBlackBoard extends Fragment { 
    public static View _rootView; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    if (_rootView == null || _isRefreshDashboard) { 
     _rootView = inflater.inflate(R.layout.ItemDetailFragmentBlackBoard, container, false); 

     // your code can't be change without refreshFragment in here.. 

     _isDashboardRefresh = false; 
    } 
} 

// Globale Variablen

public abstract class CommonBase extends AppCompatActivity { 
    public static boolean _isRefreshDashboard; 
} 

// Refresh your Fragment

CommonBase._isRefreshDashboard = true; 
Verwandte Themen