android.util.SuperNotCalledException: Activity {com.st.sliding/com.st.sliding.MainActivity} did not call through to super.onCreate()
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2418)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2524)
at android.app.ActivityThread.access$800(ActivityThread.java:167)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1419)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5546)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759)
public class MainActivity extends SlidingActivity {
private SlidingActivityHelper mHelper;
TodayFragment today;
GroupFragment groupFragment;
AdviceFragment adviceFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 去掉标题栏
// this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.layout_main);
// this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
// WindowManager.LayoutParams.FLAG_FULLSCREEN);
// set the Behind View
setBehindContentView(R.layout.frame_menu);
FragmentTransaction fragmentTransaction = getFragmentManager()
.beginTransaction();
LeftMenuFragment menuFragment = new LeftMenuFragment();
fragmentTransaction.replace(R.id.menu, menuFragment);
fragmentTransaction.commit();
initSlidingMenu();
// //提示跳转
// showProgressDialog("提示", "正在跳转,请稍后......");
//
}
private void initSlidingMenu() { // 如果保存的状态不为空则得到之前保存的Fragment,否则实例化MyFragment
// if (savedInstanceState != null) {
// mContent = getSupportFragmentManager().getFragment(
// savedInstanceState, "mContent");
// }
//
// if (mContent == null) {
// mContent = new TodayFragment();
// }
// customize the SlidingMenu
SlidingMenu sm = getSlidingMenu();
sm.setShadowWidth(50);
sm.setShadowDrawable(R.drawable.shadow);
sm.setBehindOffset(180);// 设置slindingmenu的宽度
sm.setFadeDegree(0.35f);
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
toggle();
break;
}
return super.onOptionsItemSelected(item);
}
private long exitTime = 0;
@Override
public void onBackPressed() {
if (System.currentTimeMillis() - exitTime > 2000) {
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();
System.exit(0);
android.os.Process.killProcess(android.os.Process.myPid());
}
}
}
看代码,确实不像对 super 的调用问题。
如果问题必现,建议你简化初始化部分的代码,特别是对 Fragment 的初始化。先分析出是什么代码引起的错误,再分析原因。
onCreate()函数中没有调用super.onCreate() 函数。 记住这个系统回掉函数都要调用它的super方法,至于为什么只能简单说一下。比如activity的
onCreate()方法,该方法是系统调用的,我们可以覆写该方法来加载一些视图等等,但是一定还要记得调用super.onCreate()方法,因为系统会在
该方法中帮我们做一些初始化动作,若该方法没有被调用,系统就会抛出异常。