0

参照用にアイテムクリックリスナーコードにリストビューを配置しています。リストビューの各アイテムクリックで、フラグメントを別のフラグメントに置き換えています。フレームレイアウトファイルにメインフラグメント(フラグメント1)を配置しました。同じビューでフラグメントを切り替えます。

 listView.setOnItemClickListener(new OnItemClickListener() {
                   @Override
                   public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) {

                  if(array[position].equalsIgnoreCase("movies")){
                       FragmentTransaction transaction = getFragmentManager().beginTransaction();
                       transaction.replace(R.id.fragment1, new next());

                       transaction.commit();
                  }
                  if(array[position].equalsIgnoreCase("serials")){
                       FragmentTransaction transaction = getFragmentManager().beginTransaction();
                   transaction.replace(R.id.fragment1, new Item2());

                       transaction.commit();
                 }  
                  if(array[position].equalsIgnoreCase("restaurents")){
                       FragmentTransaction transaction = getFragmentManager().beginTransaction();
                   transaction.replace(R.id.fragment1, new Item3());

                       transaction.commit();
                 }     
                   } 
                });

映画をクリックすると、fragment1 は新しいフラグメント (項目 1) に置き換えられます 同様に、シリアルをクリックすると、fragment1 は新しいフラグメント (項目 2) に置き換えられます 新しいフラグメントに切り替えると、fragment1 メモリの割り当てが解除されると考えています(アイテム 1) とフラグメント (アイテム 1) は、フラグメント (アイテム 2) をクリックすると割り当てが解除されます。同じように動作するかどうかを教えてください。リストアイテムのクリックごとに、より多くのフラグメントを使用する必要があるため(リスト内のアイテムの数はより多くなります)。同じように発生するかどうかを知りたいのですが、フラグメントのメモリを管理する方法はありますか。アプリケーションをメモリリークなしで実行したいので、これを行うためのより良い方法を提案してください。

4

1 に答える 1

0

これは、フラグメントのライフサイクル メソッドを使用して簡単に確認できます。

public void onStart() {
    super.onStart();
    Log.d(LOG_TAG, "Fragment1 onStart");
  }

  public void onResume() {
    super.onResume();
    Log.d(LOG_TAG, "Fragment1 onResume");
  }

  public void onPause() {
    super.onPause();
    Log.d(LOG_TAG, "Fragment1 onPause");
  }

  public void onStop() {
    super.onStop();
    Log.d(LOG_TAG, "Fragment1 onStop");
  }

  public void onDestroyView() {
    super.onDestroyView();
    Log.d(LOG_TAG, "Fragment1 onDestroyView");
  }

  public void onDestroy() {
    super.onDestroy();
    Log.d(LOG_TAG, "Fragment1 onDestroy");
  }

  public void onDetach() {
    super.onDetach();
    Log.d(LOG_TAG, "Fragment1 onDetach");
  }
于 2013-10-29T14:11:27.247 に答える