Ich habe eine App entwickelt, entfernt, dass ich ein Fragment Transaktion haben,Android Fragment, Ansicht nicht
MainActivity
enthält Fragment View
.
MainActivity
haben drei Button
oben auf dem Bildschirm, die gleich bleiben, wenn wir diese Activity
zu einem anderen Fragment
gehen, nur MainActivity
Fragment
Teil ändern, wenn wir aus drei klicken.
Aber mein Problem ist, dass, wenn ich von der diese MainActivity
-Fragment
wenn Klick auf First-Button
bewegen, die in Ordnung ist, aber wenn ich auf Second-Button
klicken, Ergebnis ist der Bildschirm mit ersten Fragment
auf einen anderen Fragment
überschreiben.
ist es in derselben Activity
so, ich nicht Fragment
durch remove(fr).commit();
entfernen Denn wenn ich tun, dass es dann nicht anklickbar Fragment so nicht Antwort auf Klick auf Next-Button können entfernen.
Gesamter, zeigen Sie es sowohl FirstFragment
und NewFragment
Bildschirm, wenn ich zu NewFragment
bewegen, wie ich den FirstFragment
Bildschirm entfernen?
In MainActivity
Drei-Tasten haben folgenden Code ändern Fragment:
Hauptaktivität:
public class MasterActivity extends Activity {
ImageView imgOne, imgTwo, imgThree;
Fragment fr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_master);
imgOne = (ImageView) findViewById(R.id.imgOne);
imgTwo = (ImageView) findViewById(R.id.imgTwo);
imgThree = (ImageView) findViewById(R.id.imgThree);
imgOne.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
fr = new FirstFragment();
FragmentManager fm = getFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.fragment_place, fr);
fragmentTransaction.addToBackStack(null);
//fragmentTransaction.remove(fr).commit();
//getFragmentManager().beginTransaction().remove(fr).commit();
fragmentTransaction.commit();
}
});
imgTwo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
fr = new SecondFragment();
FragmentManager fm = getFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.fragment_place, fr);
fragmentTransaction.addToBackStack(null);
//fragmentTransaction.remove(fr).commit();
// getFragmentManager().beginTransaction().remove(fr).commit();
fragmentTransaction.commit();
}
});
seine XML-Datei wie folgt vor:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#000000"
android:gravity="bottom"
android:weightSum="3" >
<ImageView
android:id="@+id/imgOne"
android:layout_width="0dp"
android:layout_height="27dp"
android:layout_gravity="center"
android:layout_weight="1"
android:src="@drawable/img1" />
<ImageView
android:id="@+id/imgTwo"
android:layout_width="0dp"
android:layout_gravity="center"
android:layout_height="27dp"
android:layout_weight="1"
android:src="@drawable/img2"/>
<ImageView
android:id="@+id/imgThree"
android:layout_width="0dp"
android:layout_gravity="center"
android:layout_height="27dp"
android:layout_weight="1"
android:src="@drawable/img3" />
</LinearLayout>
<fragment
android:id="@+id/fragment_place"
android:name="packagename.FirstFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.87"/>
<LinearLayout/>
<LinearLayout/>
Erster Teil:
public class FirstFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View r = inflater.inflate(R.layout.first_fratgment, container, false);
return r;
}
}
Zweiter Teil:
public class SecondFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View r = inflater.inflate(R.layout.second_fratgment, container, false);
return r;
}
}
Aber wenn Klick auf eine Schaltfläche Fragment
-Taste, um eine andere es sowohl erste als auch zweite Fragment
Bildschirme anzuzeigen.
Also, wie man es löst und wie man die erste Ansicht beim zweiten Klick entfernt?
ich verwendet, um dieses
fragmentTransaction.remove(fr).commit();
und dieses
getFragmentManager().beginTransaction().remove(fr).commit();
aber es funktioniert nicht.
bitte posten Sie Ihre NewFragment-Klasse –
ya sicher, siehe bearbeitete Fragen –
Sie können kein eingebettetes Fragment haben (eines im XML-Layout mit dem Fragment-Tag deklariert), mit dem Sie Transaktionen durchführen (wie replace). Anstatt dieses Fragment-Tags fügen Sie ein einfaches FrameLayout hinzu und fügen das Fragment manuell in die onCreate() -Methode der Aktivität ein. – Luksprog