Android Fragment Transaction kullanımı
ad area

Fragment Transaction bir activity sayfasından, farklı bir activity sayfasını açmaya gerek kalmadan tek bir activity sayfasında içerik alanını değiştirmeye yardımcı olacak bir konu başlığıdır. Webdeki ajax ile div'in içeriğini değiştirmek gibi düşünebilirsiniz.

Fragment Transaction içeriğin gösterilmesini istediğiniz Activity sınıfı içerisine FrameLayout nesnesi eklenerek kullanılır.

Bir proje oluşturalım ve activity_main.xml için aşağıdakileri yazalım;

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context=".MainActivity">

<Button
android:id="@+id/fragment1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Fragment 1" />

<Button
android:id="@+id/fragment2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Fragment 2" />

<FrameLayout
android:layout_below="@id/fragment2"
android:id="@+id/frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</RelativeLayout>

MainActivity.java için;

public class MainActivity extends AppCompatActivity {

Button fragment1,fragment2;
public void changeFragment(Fragment fragment){
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame,fragment);
fragmentTransaction.commit();
}

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

//Sayfa açıldığında içeriği boş gelmesin dite 1. fragmenti gösteriyorum.
changeFragment(new Fragment1());

fragment1 = findViewById(R.id.fragment1);
fragment2 = findViewById(R.id.fragment2);
fragment1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
changeFragment(new Fragment1());
}
});
fragment2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
changeFragment(new Fragment2());
}
});

}
}

Fragment1.java ve Fragment2.java classları için

public class Fragment1 extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1,null);
return view;
}
}
public class Fragment2 extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment2,null);
return view;
}
}
Fragmentlar için fragment1 ve fragment2 isimlerinde layoutlar oluşturmayı unutmayınız.
Bu makaleyi paylaşın:
İstanbul'da yaşıyorum.Web üzerinde Frontend/Backend Geliştirmenin yanı sıra, Android Geliştirme, PHP/ASP.NET, C# Yazılım Uzmanlığı ve Java konuları işliyorum. Kod Şiirdir, onları seviyorum.

Bir yorum bırakın