2016-04-07 4 views
1

ListItemListViewから選択されると、Fragmentのレイアウトを変更しようとしています。しかし、私はこれをどうやってやっていくのかは分かりません。ここで私が使用しているコードに基づい...ListItemをクリックした後、どのようにフラグメントレイアウトを変更するのですか?

@Override 
public View onCreateView(final LayoutInflater inflater,final ViewGroup container, Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_list_d, container, false); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 

      // Getting list item index 
      int listIndex = position; 

      ((IndexListener) getActivity()).onIndexSelected(listIndex); 

     } 
    }); 


    return rootView; 

} 

私は意図的に可能な限りの質問に関連したとして、それを維持するためにコードのセクションを削除したのです。

概要

ListItemがクリックされた後、どのように私は、R.layout.fragment_list_d以外の別のレイアウト形式を返すようにrootViewを変更するのでしょうか?

+0

別のレイアウトを展開する必要がありますが、問題は何ですか? – Nanoc

+0

'ListItem'がクリックされると、別のレイアウトをどのように膨張させるのか分かりません。私はまだrootViewを使用する必要がありますか? –

+0

私はあなたが理解していると思う、あなたはsetContentViewを探していますが、断片です...あなたはこの解決策を持っています(私はそれが好きではありません、もしあなたもそうでないなら教えてください)http://stackoverflow.com/questions/10951958/replacing-a -fragments-view-after-oncreateview-has-run – Nanoc

答えて

1

フラグメントを置き換えたくない場合の唯一の選択肢は、親を取得し、以前のコンテンツを削除して新しいものを追加することです。

クラスフィールドの最初の店舗rootViewあなたがonCreateViewで合格した後、あなたはその参照を取得できるように、その後の操作を行います。このよう

ViewGroup parentView =rootView.getParent(); 
parentView.removeView(rootView); 
View newRootView = inflater.inflate(R.layout.newlayout, parentView, false); 
parentView.addView(newRootView); 

何かが作業(テストしていませんが、ちょうど私の頭から書いている必要があります)

これは役立ちます。

関連する問題