2014-02-11 3 views
0

Я пытаюсь заменить фрагмент другим фрагментом, если пользователь нажимает на один из элементов списка. Теперь проблема заключается в том, что отображается другой фрагмент, но он не заменяет предыдущий кадр, но он просто отображается поверх предыдущего фрагмента. Это, как я называю свой новый фрагмент на элемент списка нажмите:Перекрытие при замене одного фрагмента на другой

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

      String sender = ((TextView) view.findViewById(R.id.sender)).getText() .toString(); 
      String subject = ((TextView) view.findViewById(R.id.subject)).getText() .toString(); 
      String fname = ((TextView) view.findViewById(R.id.file_name)).getText() .toString(); 


      Fragment frag =new DisplayFragment(); 
      Bundle bundle = new Bundle(); 
      bundle.putString("file_name", fname); 
      frag.setArguments(bundle); 

      FragmentManager fragmentManager = getFragmentManager(); 
      FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
      fragmentTransaction.replace(R.id.fragment_frame, frag); 
      fragmentTransaction.addToBackStack(null); 
      fragmentTransaction.commit(); 

и деятельность, связанная с этим фрагментом является:

<FrameLayout 
    android:id="@+id/fragment_frame" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
/> 

<ListView 
    android:id="@+id/list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 
</ListView> 

теперь код для нового фрагмента:

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) 
{ 
    View rootView = inflater.inflate(R.layout.activity_displayfile, container, false); 
    return rootView; 

} 
public void onActivityCreated(Bundle savedInstanceState) 
{ 
    super.onActivityCreated(savedInstanceState); 
    TextView tv=(TextView)getView().findViewById(R.id.textView1); 
    Bundle bundle = this.getArguments(); 
    String myfile = (String)bundle.get("file_name");   
    tv.setText(myfile); 
} 

и связанной с ним деятельностью является:

<FrameLayout 
    android:id="@+id/display_frame" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
> 
<TextView 
    android:id="@+id/textView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 
</FrameLayout> 

желаемый результат должен быть текстовым в новом фрагменте, который должен заменить весь контент предыдущего фрагмента. но результат после нажатия элемента, который я получаю: enter image description here Этот «привет» должен отображаться отдельно, а не со списком. Кажется, мой код верен. Заранее спасибо.

ответ

-1

Проблема в том, что у вас есть макет кадра в виде списка в одном представлении. Вы заменяете свой фрейм фрагментом, но ваш список по-прежнему существует.

  1. Используйте фрагмент в вашем XML вместо макета кадра и список зрения
  2. Создать фрагмент списка
  3. О создании деятельности добавить фрагмент списка к просмотру
  4. На элементе списка выберите заменить фрагмент списка с вашим фрагмент.

Надеюсь, это поможет.

+0

Отсутствие размещения списка в рамке рамки не помогает –

+0

Пожалуйста, см. Обновление – Sanjeev

+0

. Один из вариантов заключается в замене макета кадра, который я понял, но что такое «использовать идентификатор вида списка в замене фрагмента», как вы это делаете? –

Смежные вопросы