1

アプリでフラグメントを使用して複数回インスタンス化しようとしていますが、最初のものしか作成できません。FragmentTransaction コードが呼び出されますが、2 番目のインスタンスが画面に表示されることはありません。(または、「追加」を呼び出しているにもかかわらず、最初のものが上書きされる可能性があります。)

について聞いたことListFragmentがありますが、これが機能しない場合はそれを試してみようとしています...しかし、このフラグメントの複数のインスタンスを作成できないのはなぜですか?

MainActivity.java で変更した内容は次のとおりです。(ところで:addSlotFragmentここで2回呼び出すことは、最終的に私が望むものではありません...ボタンを押すだけで呼び出す予定です...しかし、この簡単な例を機能させることができれば、おそらく到達できると思います私の最終的な解決策。)

public class MainActivity extends Activity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    addSlotFragment();

    addSlotFragment();
  }


  @TargetApi(Build.VERSION_CODES.HONEYCOMB)
  private void addSlotFragment() {
    System.out.println("adding fragment");
    // add time-slot fragment
    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    TimeSlotFragment fragment = new TimeSlotFragment();
    fragmentTransaction.add(R.id.time_slot_container, fragment);
    fragmentTransaction.commit();
  }
}

... そして、デフォルトの activity_main.xml に追加した部分:

    <LinearLayout 
      androids:id="@+id/time_slot_container"
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal">
    </LinearLayout>

これは非常に単純な TimeSlotFragment.java です。

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class TimeSlotFragment extends Fragment {

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.time_slot, container, false);
  }
}

...そしてtime_slot.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" >

  <EditText
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:singleLine="true"
    android:hint="action"
    >
    <requestFocus />
  </EditText>

  <EditText
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:singleLine="true"
    android:hint="time"
    android:inputType="number"
    />

</LinearLayout>
4

1 に答える 1

0

問題の原因となっている完全な contentView を置き換えているため、LinearLayout 内にレイアウト (FrameLayout の可能性があります) を配置してみてください。

于 2013-10-25T04:42:27.673 に答える