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;
}
}
also was willst du lieber als über Aktivität zeigen? Soll es als Dialog angezeigt werden? oder was? – zihadrizkyef