Új hozzászólás Aktív témák

  • thiclyoon
    aktív tag

    Akkor jó, nem teljesen hülyültem meg :D

    Amit pedig szeretnék csinálni az az, hogy van egy beállítások menüpontom, ebből akarok nyitni egy fragmentet, ahol a felhasználó a saját adatait szerkesztheti, de értelemszerűen ez a szerkesztési lehetőség nem tartozik a rendes menü listához, csak úgy " lóg a levegőben"

    Régen ezt úgy csináltam meg, hogy a a menüre kattintás eseményre mindig lecseréltem a container layout-ba a tartalmat az éppen kiválasztott fragmentre, és ahol kellett ott simán a fragmentmanager segítségével nyitottam meg a fragmentből a fragmentet

    De ez ugye itt nem akaródzik működni, null pointer kapok, mert nem található a container, ami ugye nincs is a base projektben

    Dialoggal meg lehetne oldani egyszerűbben, de ehhez sztem jobban illik egy teljes fragment

    Ahogy mondani szokták, a jelenlegi megoldás szuboptimális, de működik. Biztos van szebb, egyszerűbb megoldása is :) Ezekkel a kódokkal a home-ban a text-re kattinva lecseréli a notification fragment-re, majd a dashboard-ra nyomva kicseréli a dashboard-ra (ahogy várnánk). A többi feladat megoldását (pl. home-ra visszanyomásra mi történjen) az olvasóra bízom :)

    MainActivity.kt-ba

    interface MyListener {
    fun clicked()
    fun declicked()
    }
    class MainActivity : AppCompatActivity(), MyListener {
    ...
    override fun clicked() {
    val transaction: FragmentTransaction = supportFragmentManager.beginTransaction()
    transaction.replace(R.id.nav_host_fragment, NotificationsFragment())
    transaction.commit()
    }
    override fun declicked() {
    val transaction: FragmentTransaction = supportFragmentManager.beginTransaction()
    transaction.replace(R.id.nav_host_fragment, DashboardFragment())
    transaction.commit()
    }
    }

    HomeFragment-be:

    override fun onCreateView(...): View? {
    ...
    textView.setOnClickListener {
    (activity as MyListener).clicked()
    }
    ...
    }

    DashboardFragment-be:
    override fun onCreateView(...): View? {
    ...
    textView.setOnClickListener {
    (activity as MyListener).declicked()
    }
    ...
    }

    És hogy lásd a változást, res/layout/fragment_notification-be:
    <androidx.constraintlayout.widget.ConstraintLayout
    ...
    android:background="#CA1414"
    tools:context=".ui.notifications.NotificationsFragment">

    Illetve a res/layout/fragment_dashboard-ba:
    <androidx.constraintlayout.widget.ConstraintLayout
    ...
    android:background="#066EFF"
    tools:context=".ui.dashboard.DashboardFragment">

Új hozzászólás Aktív témák