【问题标题】:Incompatible types cannot be converted to Fragment不兼容的类型不能转换为 Fragment
【发布时间】:2018-06-20 00:39:13
【问题描述】:

所以我正在尝试制作一个带有底部导航的简单应用程序,但我有点卡在片段的东西上。

我这些错误:

error: incompatible types: berandaFragment cannot be converted to Fragment  
error: incompatible types: beritaFragment cannot be converted to Fragment   
error: incompatible types: radioFragment cannot be converted to Fragment    
error: incompatible types: kegiatanFragment cannot be converted to Fragment 

这是我的 MainActivity.java

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.widget.FrameLayout;

public class MainActivity extends AppCompatActivity {

    private BottomNavigationView mMenuUtama;
    private FrameLayout mFrameUtama;

    private berandaFragment berandaFragmentMenu;
    private beritaFragment beritaFragmentMenu;
    private radioFragment radioFragmentMenu;
    private kegiatanFragment kegiatanFragmentMenu;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mFrameUtama = (FrameLayout) findViewById(R.id.frame_utama);
        mMenuUtama = (BottomNavigationView) findViewById((R.id.menu));

        berandaFragmentMenu = new berandaFragment();
        beritaFragmentMenu = new beritaFragment();
        radioFragmentMenu = new radioFragment();
        kegiatanFragmentMenu = new kegiatanFragment();

        mMenuUtama.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                    switch (item.getItemId()) {
                        case R.id.menu_beranda :
                            setFragment(berandaFragmentMenu);
                            return true;

                        case R.id.menu_berita :
                            setFragment(beritaFragmentMenu);
                            return true;

                        case R.id.menu_radio :
                            setFragment(radioFragmentMenu);
                            return true;

                        case R.id.menu_kegiatan :
                            setFragment(kegiatanFragmentMenu);
                            return true;

                        default:
                            return false;
                }
            }
        });
    }

    public void setFragment(Fragment fragment) {
        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.replace(R.id.frame_utama, fragment);
        fragmentTransaction.commit();
    };}

我是初学者,如果发现解决方法很简单,请见谅。我实际上是按照一个教程来做这个的,我遵循了每一步,但是我得到了这些错误,所以我很困惑。

谢谢你。

【问题讨论】:

  • 检查你的berandaFragment,是android.app.Fragment 还是android.support.v4.app.Fragment
  • 让我们看看你的 1 个片段
  • 对不起@HongDuan 的回答晚了,片段似乎是android.app.Fragment
  • @FazanCheng 我不知道怎么显示,对不起
  • 将整个 java 代码复制并粘贴到这个 stackoverflow 帖子中

标签: java android android-studio android-fragments cradle


【解决方案1】:

这可能是由于您导入了应用程序版本的片段而不是框架或 v4 版本。您已将 Activity 定义为扩展 AppCompat,这是支持框架的一部分。因此,此 Activity 托管的所有片段都必须来自支持框架,即android.support.v4.app.Fragment。您可以让您的活动扩展为简单的Activity 或将您的片段转换为 v4 类型。此决定将取决于您的目标设备级别。

本文详细讨论了支持框架:

http://martiancraft.com/blog/2015/06/android-support-library/

【讨论】:

    猜你喜欢
    • 2021-12-20
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多