2013-01-22 25 views
5

Tôi muốn làm mới hoặc gọi onCreateView trong mã sau. Tôi có một tên miền nam để xóa một mục và sau khi tôi muốn làm mới mảnh với Mặt hàng mới .. Cảm ơn bạn!Cách gọi phương thức onCreateView hoặc làm mới phân đoạn của tôi?

public class ItemDetailFragmentBlackBoard kéo dài 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

những gì bạn đang cố gắng để xóa và làm những gì bạn muốn được cập nhật – tyczj

+0

Tôi nghĩ rằng bạn có lẽ chỉ muốn cài đặt một đoạn khác, thay vào đó ... –

Trả lời

2

tôi giải quyết vấn đề của tôi replecing fragmet của tôi với chính nó

mã là:

{ 

    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 là mảnh của tôi. Tôi đang xóa một mục từ listView và sau khi tôi xóa nó, tôi gọi lại đoạn của tôi với mã de ở trên để tôi không được làm mới!

4

Tốt hơn là nên xác định một nhóm xem như một linearLayout đơn giản (gọi nó là màn hình) trong hàm onCreateView và điền nó vào một hàm như init(). Mỗi lần bạn muốn tạo lại chế độ xem của mình, chỉ cần xóa tất cả các con của linearLayout và gọi init().

Bạn đã làm tốt công việc nhưng nó đắt hơn giải pháp đơn giản của tôi.

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; 
    } 
} 

// biến toàn cầu

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

// Refresh mảnh của bạn

CommonBase._isRefreshDashboard = true; 
Các vấn đề liên quan