【问题标题】:Android, cannot be converted to FragmentAndroid,无法转换为 Fragment
【发布时间】:2023-04-03 17:15:01
【问题描述】:

我想为我的聊天编写片段,但我总是收到相同的错误消息。在互联网上,我读到它应该与“import”和“import android.support.v4.app.Fragment;”有关但这对我不起作用。

在 build.gradle (app) 中添加的数据包也不起作用..

我的 Android Studio 版本是 3.3 Canary 5。

希望你能解决我的问题,非常感谢!

TabsPagerAdapter

    import androidx.fragment.app.Fragment;
    import androidx.fragment.app.FragmentManager;
    import androidx.fragment.app.FragmentPagerAdapter;

    import android.support.v4.app.Fragment;

    class TabsPagerAdapter extends FragmentPagerAdapter {

    public TabsPagerAdapter(FragmentManager fm)
    {
        super(fm);
    }


    @Override
    public Fragment getItem(int position) {

        switch (position) {
            case 0:
                RequestsFragment requestsFragment = new RequestsFragment();
                return requestsFragment;

            case 1:
                ChatsFragment chatsFragment = new ChatsFragment();
                return chatsFragment;

            case 2:
                FriendsFragment friendsFragment = new FriendsFragment();
                return friendsFragment;

            default:
                return null;

        }
    }


    @Override
    public int getCount()
    {
        return 3;
    }

    public CharSequence getPageTitle(int position)
    {
        switch (position)
        {
            case 0:
                return "Requests";

            case 1:
                return "Chats";
            case 2:
                return "Friends";
            default:
                return null;
        }
    }
}

build.gradle(app)

        apply plugin: 'com.android.application'

    android {
        compileSdkVersion 28
        buildToolsVersion "28.0.2"
        defaultConfig {
            applicationId "com.nexsis.entwicklung.swapv12"
            minSdkVersion 15
            targetSdkVersion 28
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            }
        }
    }


    dependencies {

        implementation 'com.android.support:support-v4:28'
        implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
        implementation 'com.android.support:recyclerview-v7:28.0.0-alpha1'

        implementation 'com.google.firebase:firebase-auth:16.0.2'
        implementation 'com.google.firebase:firebase-core:16.0.0'
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:28'
        implementation 'com.android.support:design:28'
        implementation 'android.arch.navigation:navigation-fragment:1.0.0-alpha04'
        implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
    }
    apply plugin: 'com.google.gms.google-services'

【问题讨论】:

  • 我认为你这样导入 import androidx.support.v4.app.Fragment;
  • 感谢您的回答,但它不起作用.. 截图:ibb.co/fTn5kz
  • 删除implementation 'com.android.support:support-v4:28' implementation 'com.android.support:appcompat-v7:28' implementation 'com.android.support:design:28'
  • 不起作用.. :(

标签: android android-fragments fragment fragmentpageradapter support-v4


【解决方案1】:

您的导入似乎发生冲突...

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;

// this one is the old version of androidx.fragment.app.Fragment
// import android.support.v4.app.Fragment;

降级,正如其他答案所暗示的那样,这似乎不是解决方案。 请参阅artifact mappings,其中解释了如何获得build.gradle;例如,com.android.support:support-fragment 需要在此处替换为 androidx.fragment:fragment,以便知道导入。

【讨论】:

  • 感谢您的回答,但它对我不起作用,截图:ibb.co/nka0kz
  • @ThorstenMenzel 您还必须重构 RequestsFragment,因为一旦替换了一节课。这至少在导入时适用,当使用完整的类名时,它可能不会抱怨。
【解决方案2】:

Fragment、FragmentManager、FragmentPagerAdapter 尽量使用相同的版本

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

【讨论】:

  • 感谢您的回答,但不幸的是它不起作用,截图:ibb.co/nDTpCe
  • 请检查RequestFragment、ChatsFragment等都是v4.app.Fragment
  • 在FrendsFragment等“import android.app.Fragment;”当我将它添加到“import android.support.v4.app.Fragment;”时更改我再次收到错误
  • 请尽量使用 Fragment 保持一致。我的意思是,如果您使用的是 android.support.v4.app.Fragment,请在整个应用程序中使用它。我建议你使用 android.support.v4.app.Fragment。所以,你必须纠正这些错误。
【解决方案3】:

使用 getFragmentMangager() 时,请确保您的 Fragment 类扩展了 android.app.Fragment 类。 如果您有任何机会使用 android.support.v4.app.Fragment(请参阅您的导入),那么您需要改用 getSupportFragmentManager()

在你的 build.gradle 中添加这个

 implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:design:27.1.0'

你的导入应该是

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

而不是

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;

【讨论】:

  • 感谢您的回答,但不幸的是它不起作用
猜你喜欢
  • 2020-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多