Cannot convert type of expression fragmentTransaction from android.app.FragmentTransaction to androidx.fragment.app.FragmentTransaction
时间: 2024-03-03 20:28:32 浏览: 62
这个错误通常出现在 Android 应用程序中,是因为使用了不兼容的 FragmentTransaction 类型。在 Androidx 库中的 FragmentTransaction 类型与 Android 原生库中的 FragmentTransaction 类型不同。
解决此问题的方法是在代码中使用正确的 FragmentTransaction 类型。如果你正在使用 Androidx 库,则应该使用 androidx.fragment.app.FragmentTransaction 类型而非 android.app.FragmentTransaction 类型。如果你使用的是 Android 原生库,则应该使用 android.app.FragmentTransaction 类型。
你可以尝试在导入 FragmentTransaction 类型时使用正确的包名,以确保使用正确的类型。例如,如果你正在使用 Androidx 库,则应该导入 androidx.fragment.app.FragmentTransaction 类型。
相关问题
package com.example.myworkgwl01; import androidx.appcompat.app.AppCompatActivity; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.view.View; import android.view.Window; import android.widget.ImageView; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private Fragment contactFragment = new contactFragment(); private FragmentManager fragmentManager; private ImageView IContact; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); supportRequestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); initFragment(); } //可以定义函数更简洁 private void initFragment(){ fragmentManager = getFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.add(R.id.id_content, contactFragment); transaction.commit(); } private void hideFragment(FragmentTransaction transaction){ transaction.hide(contactFragment); } @Override public void onClick(View v) { } }
这是一个 Android 应用程序的 MainActivity 类的代码。其中,该类实现了 View.OnClickListener 接口,表示可以响应视图的点击事件。在 onCreate 方法中,使用 supportRequestWindowFeature 方法隐藏了标题栏,并调用了 initFragment 方法初始化 Fragment。hideFragment 方法用于隐藏 Fragment。在 onClick 方法中可以添加响应点击事件的代码。
需要的类型: androidx.fragment.app.FragmentManager 提供的类型: android.app.FragmentManager
要获取`androidx.fragment.app.FragmentManager`,需要在`Activity`中使用`getSupportFragmentManager()`方法,而不是`getFragmentManager()`方法。因为`androidx.fragment.app.FragmentManager`是在`androidx`库中提供的,而不是在`android`库中提供的。因此,如果你的`Activity`使用了`androidx`库中的`Fragment`,那么你需要使用`getSupportFragmentManager()`方法来获取`FragmentManager`对象。
示例代码如下:
```java
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取FragmentManager对象
FragmentManager fragmentManager = getSupportFragmentManager();
// 开始Fragment事务
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
// 添加Fragment到容器中
MyFragment myFragment = new MyFragment();
fragmentTransaction.add(R.id.fragment_container, myFragment);
// 提交事务
fragmentTransaction.commit();
}
}
```
阅读全文