.beginTransaction().add 在 Android Studio 中不起作用
Posted
技术标签:
【中文标题】.beginTransaction().add 在 Android Studio 中不起作用【英文标题】:.beginTransaction().add not working in Android Studio 【发布时间】:2021-12-16 14:31:33 【问题描述】:每个人。我目前正在学习在 android Studio 中切换片段,不幸的是我们的教科书已经过时了。当我尝试使用以下代码时:
if (currentFragment == null)
val fragment = RootBeer()
supportFragmentManager.beginTransaction().add(R.id.fragmentContainer, fragment).transaction.commit()
我收到以下错误:
<html>None of the following functions can be called with the arguments supplied:<br/>public open fun add(fragment: Fragment, tag: String?): FragmentTransaction defined in androidx.fragment.app.FragmentTransaction<br/>public open fun add(containerViewId: Int, fragment: Fragment): FragmentTransaction defined in androidx.fragment.app.FragmentTransaction
这是清单代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="edu.ivytech.rootbeerspring2021" >
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/MyTheme.DayNight" >
<activity
android:name=".MainActivity"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ScanBarcodeActivity" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="edu.ivytech.rootbeerspring2021.fileprovider"
android:exported="false"
android:grantUriPermissions="true" >
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/files" />
</provider>
</application>
</manifest>
和我的 fragmentContainer 代码:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:id="@+id/fragmentContainer"
android:layout_
android:layout_
tools:context=".fragmentContainer">
</androidx.constraintlayout.widget.ConstraintLayout>
如果这里有任何其他对您有帮助的信息,请告诉我。 非常感谢!
【问题讨论】:
【参考方案1】:使用replace
代替add
if (fragment != null)
val transaction = supportFragmentManager.beginTransaction()
transaction.replace(R.id.fragment_layout_id, fragment)
transaction.commit()
【讨论】:
以上是关于.beginTransaction().add 在 Android Studio 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Entity Framework 6 DbContext.Database.BeginTransaction 中配置事务超时?
使用 getFragmentManager().beginTransaction() 在 Android 中为 FragmentTransaction 键入不匹配
Hibernate的getTransaction()和beginTransaction()