5

次のコードで、onCreateViewをリフレッシュまたは呼び出したいとします。 私はアイテムを削除するためにcontex menuを持っていますし、新しいアイテムでフラグメントをリフレッシュした後に。 ありがとうございました!どのようにonCreateViewメソッドを呼び出すか、フラグメントを更新しますか?

パブリッククラスItemDetailFragmentBlackBoardフラグメント{

@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

何削除しようとしていると、何を私はあなたおそらくだと思う – tyczj

+0

を更新することにしたいんあなたのフラグメントを更新代わりに別のフラグメントをインストールしたい –

答えて

2

を拡張I自体

でコードを私fragmetをreplecing私の問題を解決している。

{ 

    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は私の断片です。私はlistViewからアイテムを削除しています。削除した後、上記のコードでフラグメントを再呼び出しして、リフレッシュされません!

4

onCreateView関数で単純なlinearLayout(それを画面と呼ぶ)のようにviewGroupを定義し、init()のような関数に入力する方が良いです。ビューを再作成するたびに、すべてのlinearLayoutの子を削除してinit()を呼び出します。

あなたはいい仕事をしましたが、私の単純な解決策よりも高価です。

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

//グローバル変数

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

//

CommonBase._isRefreshDashboard = true; 
関連する問題