Замена вида фрагментами - PullRequest
0 голосов
/ 27 февраля 2012

Я пытался изменить свое решение на использование фрагментов вместо ActivityGroups и нашел пример, который позволил мне изменить часть моего пользовательского интерфейса в зависимости от лежащего над ним ListView. Что я хочу сделать, так это иметь ListView, который при щелчке элемента заменяет себя так, что виден только новый макет - возможно ли это?

Ниже вы увидите соответствующий пример кода, который я использую:

public class FragmentTestActivity extends FragmentActivity implements OnItemClickListener 
{
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ListView l = (ListView) findViewById(R.id.number_list);
    ArrayAdapter<String> magzTitles = new ArrayAdapter<String>(getApplicationContext(),
                android.R.layout.simple_list_item_1,
                    new String[]{"Cupcake",
                             "TaberTHULE",
                             "Lite"});
    l.setAdapter(magzTitles);
    l.setOnItemClickListener(this);
}

public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
{
    Fragment testFragment = new TestFragment(position++);
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.the_frag, testFragment);
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
    ft.addToBackStack(null);
    ft.commit();
}
}

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/frags"
>

<ListView
    android:id="@+id/number_list"
    android:layout_width="150dp"
    android:layout_height="match_parent"
    />

<fragment class="com.android.saket.fragments.TestFragment"
    android:id="@+id/the_frag"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    />

</LinearLayout>

1 Ответ

2 голосов
/ 27 февраля 2012

Это возможно, я бы использовал Framelayout в качестве контейнера, а затем получил два разных фрагмента, которые будут отключены (переключение происходит в вашей деятельности). Это довольно просто, и у вас не должно быть проблем с поиском примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...