2017-11-19 11 views
0

保持されているフラグメントでいくつかのビューを動的に作成したい。これは次のようになります。保持されたフラグメント内の動的ビューの作成

public class DemoFragment extends Fragment { 

    @Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
     ... 
     setRetainInstance(true); 
    } 

    public void createViews(List<String> objList) { 
     TableLayout tableLayout = getView.findViewById(R.id.tl); 
     for (String str: objList) { 
      TextView textView = new TextView(getContext()); 
      textView.setText(str); 
      TableRow tableRow = new TableRow(getContext()); 
      tr.addView(textView); 
      tableLayout.addView(tableRow); 
     }  
    } 
} 

これらの動的に作成されたビューを保持する適切な方法は何ですか?これらのビューはフラグメントのデータメンバーであるべきですか?たとえば、そのような方法で?

public class DemoFragment extends Fragment { 
    TableLayout tableLayout; 
    TextView textView; 
    TableRow tableRow; 

    @Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
     ... 
     setRetainInstance(true); 
    } 

    public void createViews(List<String> objList) { 
     TableLayout tableLayout = getView.findViewById(R.id.tl); 
     for (String str: objList) { 
      TextView textView = new TextView(getContext()); 
      textView.setText(str); 
      tableRow = new TableRow(getContext()); 
      tr.addView(textView); 
      tableLayout.addView(tableRow); 
     }  
    } 
} 

やデータは、List<String> objListのように、フラグメントのデータメンバでなければなりませんし、我々はcreateViews方法でonResumeを呼び出す必要がありますか?例えば:

public class DemoFragment extends Fragment { 
    List<String> objList;   

    @Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
     ... 
     setRetainInstance(true); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     createViews(objList); 
    } 

    public void createViews(List<String> objList) { 
     TableLayout tableLayout = getView.findViewById(R.id.tl); 
     for (String str: objList) { 
      TextView textView = new TextView(getContext()); 
      textView.setText(str); 
      TableRow tableRow = new TableRow(getContext()); 
      tr.addView(textView); 
      tableLayout.addView(tableRow); 
     }  
    } 
} 

設定が変更された後にこれらのビューを表示するにはどうすればいいですか?

答えて

0

あなたは断片と動的ビューを作成したい場合は、このアプローチを使用する必要があります。

は、例えば、あなたのフラグメントでメソッドを作成します。公共ボイドchangeViewを()

を、その後しばらくの間イベントがフラグメント内のこのメソッドを呼び出します。

ともあなたが世界的にこの断片のオブジェクトを作成する必要がありますし、あなたはそれがその考えられメソッドを呼び出して、ビューの

変更が必要な場所。

は、ビュー、他の賢明な、それは

はあなたのビューを変更しませんをリフレッシュするためView.invalidate()メソッドを使用することを忘れないでください。

幸運!

関連する問題