在android actionbar选项卡和选项卡侦听器中使用片段时发生ClassCastException

在android actionbar选项卡和选项卡侦听器中使用片段时发生ClassCastException,android,android-fragments,android-actionbar,classcastexception,Android,Android Fragments,Android Actionbar,Classcastexception,我在Android Studio中编译源代码时遇到ClassCastException。我不明白是什么导致了他们。我希望你能帮我修一下。这是为我的类准备的,但为了启动它,我想用emulator和API 16测试基础知识(获得Genymotion,因此如果您愿意,我可以使用任何可用的API测试它),但无法使它工作 主要活动 import android.app.ActionBar; import android.app.Fragment; import android.os.Bundle; imp

我在Android Studio中编译源代码时遇到ClassCastException。我不明白是什么导致了他们。我希望你能帮我修一下。这是为我的类准备的,但为了启动它,我想用emulator和API 16测试基础知识(获得Genymotion,因此如果您愿意,我可以使用任何可用的API测试它),但无法使它工作

主要活动

import android.app.ActionBar;
import android.app.Fragment;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;

@SuppressWarnings("deprecation")
public class MainActivity extends ActionBarActivity {

    private android.support.v7.app.ActionBar.Tab tabOne;
    private android.support.v7.app.ActionBar.Tab tabTwo;
    private android.support.v7.app.ActionBar.Tab tabThree;
    private Fragment fragmentOne = new FragmentOne();
    private Fragment fragmentTwo = new FragmentTwo();
    private Fragment fragmentThree = new FragmentThree();



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

        android.support.v7.app.ActionBar actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        tabOne = actionBar.newTab().setText("fragmentOne").setTabListener( new TabListener<FragmentOne>(this, "fragmentOne", FragmentOne.class));
        tabTwo = actionBar.newTab().setText("fragmentTwo").setTabListener( new TabListener<FragmentTwo>(this, "fragmentOTwo", FragmentTwo.class));
        tabThree = actionBar.newTab().setText("fragmentThree").setTabListener( new TabListener<FragmentThree>(this, "fragmentThree", FragmentThree.class));

        actionBar.addTab(tabOne);
        actionBar.addTab(tabTwo);
        actionBar.addTab(tabThree);

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}
堆栈跟踪:

E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.patryk.android4/com.example.patryk.android4.MainActivity}: java.lang.ClassCastException: com.example.patryk.android4.FragmentOne cannot be cast to android.support.v4.app.Fragment
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
        at android.app.ActivityThread.access$600(ActivityThread.java:130)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4745)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.ClassCastException: com.example.patryk.android4.FragmentOne cannot be cast to android.support.v4.app.Fragment
        at android.support.v4.app.Fragment.instantiate(Fragment.java:420)
        at android.support.v4.app.Fragment.instantiate(Fragment.java:395)
        at com.example.patryk.android4.TabListener.onTabSelected(TabListener.java:30)
        at android.support.v7.internal.app.WindowDecorActionBar.selectTab(WindowDecorActionBar.java:634)
        at android.support.v7.internal.app.WindowDecorActionBar.addTab(WindowDecorActionBar.java:563)
        at android.support.v7.internal.app.WindowDecorActionBar.addTab(WindowDecorActionBar.java:549)
        at com.example.patryk.android4.MainActivity.onCreate(MainActivity.java:34)
        at android.app.Activity.performCreate(Activity.java:5008)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 在android.app.ActivityThread.access$600(ActivityThread.java:130)

java:34是这一行吗

 actionBar.addTab(tabOne);
(TabListener.java:30)是这个吗

        mFragment = android.support.v4.app.Fragment.instantiate(mActivity, mClass.getName());

您没有发布stacktrace,但我已经看到类中存在一些不匹配。您可以使用一些来自支持库:
android.support.v4.app.FragmentTransaction
,一些来自主集合:
import android.app.FragmentTransaction


请检查此方面并确保使用相同的类。

您没有发布stacktrace,但我已经看到类中存在一些不匹配。您可以使用一些来自支持库:
android.support.v4.app.FragmentTransaction
,一些来自主集合:
import android.app.FragmentTransaction


请检查此方面并确保使用相同的类。

首先:
public class main活动扩展AppCompatActivity

第二:

private android.support.v4.app.Fragment fragmentOne = new FragmentOne();
private android.support.v4.app.Fragment fragmentTwo = new FragmentTwo();
private android.support.v4.app.Fragment fragmentThree = new FragmentThree();
第三:

public class FragmentThree extends android.support.v4.app.Fragment
public class FragmentOne extends android.support.v4.app.Fragment
public class FragmentTwo extends android.support.v4.app.Fragment

第一:
public class MainActivity扩展了AppCompatActivity

第二:

private android.support.v4.app.Fragment fragmentOne = new FragmentOne();
private android.support.v4.app.Fragment fragmentTwo = new FragmentTwo();
private android.support.v4.app.Fragment fragmentThree = new FragmentThree();
第三:

public class FragmentThree extends android.support.v4.app.Fragment
public class FragmentOne extends android.support.v4.app.Fragment
public class FragmentTwo extends android.support.v4.app.Fragment

你能把stacktrace贴出来吗?我想看到类不匹配。这里有一个拼写错误,它一定不会对演员阵容产生影响:)tabTwo=actionBar.newTab().setText(“fragmentTwo”).setTabListener(new TabListener(这个“fragmentOTwo”,fragmentTwo.class));->“fragmentOTwo”编辑了OP并添加了堆栈跟踪能否发布堆栈跟踪?我想看到类不匹配。这里有一个拼写错误,它一定不会对演员阵容产生影响:)tabTwo=actionBar.newTab().setText(“fragmentTwo”).setTabListener(new TabListener(这个“fragmentOTwo”,fragmentTwo.class));->“fragmentOTwo”编辑的OP和添加的堆栈跟踪我有一些未使用的导入,因为在修复代码和类型不匹配的过程中,我必须使用旧版本的库。我有一些未使用的导入,因为在修复代码和类型不匹配的过程中,我必须使用旧版本的库。