Kotlinde Activity içinde Fragment Kullanımı

 


Önce bir proje oluşturuz. Kurduğumuz projede new seçeneğiyle iki yeni fragment ekleriz. Burda Blank Fragment türünü seçeriz.

Blank Fragmentlere istediğin gibi isim verebilirsin. Ancak  ben "Fragment_One" ve " Fragment_two" isimlerini verdim. 

Activity Main in xml sini / layoutunu  silerek yerine  aşağıdaki kodu  yapıştıralım.

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

<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:layout_marginTop="0dp"
android:layout_alignParentTop="true"
android:gravity="center"
android:id="@+id/linearLayout">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/buttonFragmentOne"
android:text="Fragment One"
android:textSize="20dp"/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/buttonFragmentTwo"
android:text="Fragment Two"
android:textSize="20dp"/>

</LinearLayout>

<FrameLayout
android:id="@+id/frameLayoutForFragments"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/linearLayout"
android:orientation="horizontal">

</FrameLayout>


</RelativeLayout>


Res dosyalarından stringsi seçip aşağıdaki kodu yapıştıralım.

<resources>
    <string name="app_name">Fragment Example</string>
    <string name="fragment_one_title">Birinci Fragment</string>
    <string name="fragment_two_title">İkinci Fragment</string>
</resources>

Fragment_One 'ın içini silip yerine aşağıdaki kodu yapıştıralım.


<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Fragment_One">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/fragment_one_title"/>

<TextView
android:id="@+id/textView"
android:layout_width="113dp"
android:layout_height="126dp"
android:layout_gravity="center"
android:text="1"
android:textSize="100dp"
android:textStyle="bold" />

</FrameLayout>

Fragment_two nun içini silip onun içine de aşağıdaki kodu yapıştıralım.

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Fragment_two">

<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:text="@string/fragment_two_title"/>

<TextView
android:id="@+id/textView"
android:layout_width="347dp"
android:layout_height="273dp"
android:layout_gravity="center"
android:text="2"
android:textSize="100dp"
android:textStyle="bold" />

</FrameLayout>

Şimdi Main Activity de

class MainActivity : AppCompatActivity() 
den sonrasını silip yerine aşadaki  kodu yapıştırıyoruz.

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_main)
val buttonFragmentOne: Button = findViewById(R.id.buttonFragmentOne)
val buttonFragmentTwo: Button = findViewById(R.id.buttonFragmentTwo)

buttonFragmentOne.setOnClickListener {
callFragment(Fragment_One())
}
buttonFragmentTwo.setOnClickListener {
callFragment(Fragment_two())
}
}

fun callFragment(fragment: Fragment) {
val fragmentTransaction = supportFragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.frameLayoutForFragments, fragment)
fragmentTransaction.commit()
}

}

Fragmentlerin içini  kendi isteğinize göre değiştirebilirsiniz. Text yerine başka uygun olabilecek herhangi bir fonksiyonu veya içeriği içinde kullanabilir. İsteğinize göre değiştirebilirsiniz.
Bu işlemleri yaparken herhangi bir sorun çıkarsa alt +enter  komutuyla gerekli classları import ederseniz sorunlar çözülür.
Aynı zamanda yeni activity ler ekleyerek onların içine de istediğiniz gibi fragmentler ekleyebilirsiniz.



SHARE

About Sami Aksoy

    Blogger Comment
    Facebook Comment

0 #type=(blogger):

Yorum Gönder