2017-10-24 5 views
1

Ich möchte ein Fragment anzeigen, wenn auf ein Element in der Listenansicht geklickt wird. Die Listenansicht befindet sich in der Hauptaktivität. Das Problem besteht darin, dass das Fragment über der Aktivitätslistenansicht angezeigt wird. Weißt du, was ist das Problem?Fragment erscheint über Aktivität

Haupttätigkeit:

public class MainActivity extends AppCompatActivity { 

    ArrayList<String> test = new ArrayList<>(); 

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

     ListView listView = (ListView) findViewById(R.id.listView); 

     test.add("item 1"); 
     test.add("item 2"); 

     ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, test); 
     listView.setAdapter(arrayAdapter); 

     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
       EditorFragment editorFragment = new EditorFragment(); 

       getSupportFragmentManager().beginTransaction() 
         .add(R.id.fragment_container, editorFragment).commit(); 
      } 
     }); 
    } 
**activity main xml** 

    <?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/fragment_container" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     tools:layout_editor_absoluteY="8dp" 
     tools:layout_editor_absoluteX="8dp" /> 

    <ListView 
     android:id="@+id/listView" 
     android:layout_width="368dp" 
     android:layout_height="495dp" 
     tools:layout_editor_absoluteX="8dp" 
     tools:layout_editor_absoluteY="8dp" /> 
</android.support.constraint.ConstraintLayout> 

Fragment-Editor XML

<EditText xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/editor" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="top|left" 
    android:inputType="text" 
    android:hint="@string/hint"/> 

EditorFragment

public class EditorFragment extends Fragment { 

    private EditText editor=null; 


    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View result=inflater.inflate(R.layout.fragment_editor, container, false); 

     editor=(EditText) (result.findViewById(R.id.editor)); 

     return result; 

    } 
} 

Ich habe die removeAllViews-Methode im Fragment verwendet, funktioniert aber nicht, wenn auf das Element geklickt wird. Das Fragment wird nicht angezeigt.

public class EditorFragment extends Fragment { 

     private EditText editor=null; 


     @Nullable 
     @Override 
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
      View result=inflater.inflate(R.layout.fragment_editor, container, false); 

      if(container != null) 
      { 
       container.removeAllViews(); 
      } 

      editor=(EditText) (result.findViewById(R.id.editor)); 

      return result; 

     } 
    } 
+0

also was willst du lieber als über Aktivität zeigen? Soll es als Dialog angezeigt werden? oder was? – zihadrizkyef

Antwort

1

Ich bin nicht sicher, ob das Problem zu bekommen, aber vielleicht können Sie versuchen, Ihre Container Sichtbarkeit auf unsichtbar zu setzen, wenn Sie und es kein Fragment verwenden zeigen, wenn nötig.