在android actionbar选项卡和选项卡侦听器中使用片段时发生ClassCastException
我在Android Studio中编译源代码时遇到ClassCastException。我不明白是什么导致了他们。我希望你能帮我修一下。这是为我的类准备的,但为了启动它,我想用emulator和API 16测试基础知识(获得Genymotion,因此如果您愿意,我可以使用任何可用的API测试它),但无法使它工作 主要活动在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
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和添加的堆栈跟踪我有一些未使用的导入,因为在修复代码和类型不匹配的过程中,我必须使用旧版本的库。我有一些未使用的导入,因为在修复代码和类型不匹配的过程中,我必须使用旧版本的库。