【问题标题】:cannot be converted to Fragment无法转换为片段
【发布时间】:2016-01-19 00:19:58
【问题描述】:

我创建了一个FragmentOne extends Fragment,但出现以下编译时错误:

"无法转换为 Fragment!",

我正在关注这个tutorial

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
  }
  public void selectFrag(View view){
      Fragment fragment;
      if(view == findViewById(R.id.button1)){
          fragment = new FragmentOne();
      }
  }
} 

【问题讨论】:

  • 检查导入。如果您使用 FragmentTransaction 的支持片段,则使用片段的 v4 格式
  • 检查this是否有帮助

标签: android fragment


【解决方案1】:

您正在使用 AppcompatActivity 。所以将您的片段导入替换为

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

而不是

import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;

【讨论】:

  • 谢谢,转换后的问题解决了,但是出现了新问题 "FragmentManager fragmentManager = getFragmentManager();",required "v4.app.FragmentManager",found"app.FragmentManager"
  • 如果我的回答帮助您解决了问题。那么请不要忘记将此标记为已接受的答案。
  • 您可以在新问题中添加另一个问题。
  • 请同时更改片段类中的导入
  • android.support.v4.app.Fragment 是 android 支持库中的 Fragment 类,它是一个兼容性包,允许您在旧版本的 Android 上使用 Android 的一些较新功能。 android.app.Fragment 是 Android SDK 原生版本中的 Fragment 类。它是在 Android 3 (API 11) 中引入的。如果你想让你的应用使用 Fragments,并且想要针对 API 11 之前的设备,你必须使用android.support.v4.app.Fragment。但是,如果您只针对运行 API 11 或更高版本的设备,则可以使用 android.app.Fragment
猜你喜欢
  • 1970-01-01
  • 2021-08-01
  • 2015-11-05
  • 1970-01-01
  • 1970-01-01
  • 2013-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多