android - 使用 getFragmentManager() 时的类型不兼容
问题描述
我有以下代码:
package asus.example.com.notes1;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.ShareActionProvider;
public class MainActivity extends Activity {
private void selectItem(int position){
Fragment fragment;
switch (position){
case 1:
fragment = new PizzaFragment();
break;
case 2:
fragment = new PastaFragment();
break;
case 3:
fragment = new StoresFragment();
break;
default:
fragment = new TopFragment();
}
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, fragment);
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
}
}
我不知道为什么,但 Android Studio 强调了以下行:FragmentTransaction ft = getFragmentManager().beginTransaction();
并写道:
不兼容的类型。必需:android.support.v4.app.FragmentTransaction 找到:android.app.FragmentTransaction
试图改变:
android.support.v4.app.FragmentTransaction
上:
android.app.FragmentTransaction
但在这种情况下,它取消了以下行:
ft.replace(R.id.content_frame, fragment);
并写道:
错误的第二个争论类型
也许,这是因为扩展了 Activity(也许 AppCompat 一切正常,但我无法更改,好像我知道,我在应用程序中使用的主题与 Appcompat 不兼容)
解决方案
您使用的错误,android.support.v4.app.FragmentManager
那么您应该使用getSupportFragmentManager()
需要改变
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, fragment);
推荐阅读
- swagger - 您如何更改 Swagger 图标?
- c# - 绑定到集合计数在哪里
- php - PHP服务器端隐藏xml到json,结果有不同的格式
- selenium - Selenium Web 驱动程序切换上下文
- javascript - package.json 中的节点引擎 8.x 或 10.x
- regex - 有人可以解释一下,这个程序的第三行到底发生了什么
- excel - Excel:向右移动,然后向下移动
- python - 安装 GraphLab 创建会使我的 Jupyter Notebook 从 Python 3.6 降级到 Python 2.7
- hyperledger-fabric - 现实世界中的超级账本——它如何扩展?
- php - 交叉引用表并将结果插入另一个表 SQL