5

次のコードで onCreateView を更新または呼び出したいと思います。アイテムを削除するためのコンテックス メニューがあり、新しいアイテムでフラグメントをリフレッシュしたい..どうもありがとう!

 public class ItemDetailFragmentBlackBoard extends 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;  
    }
4

3 に答える 3

4

onCreateView 関数で単純な linearLayout (screen と呼びます) のような viewGroup を定義し、init() のような関数で埋める方が良いでしょう。ビューを再作成するたびに、linearLayout のすべての子を削除して init() を呼び出すだけです。

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

于 2013-02-04T06:27:42.437 に答える
2

フラグメントをそれ自体で置き換えることで問題を解決しました

コードは次のとおりです。

{

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

于 2013-01-23T13:17:47.970 に答える