2 qq 28169739 qq_28169739 于 2016.02.03 16:48 提问

android 程序进入后台以后,过一段时间再点进去报错,黑屏。

下面是写的异常日志抓取的报错代码:

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)

_上面说我的onCreate为空,但是我有super.onCreate(savedInstanceState);这句代码的,主要原因是因为后台再点进来没有数据了,所以为空???不知道怎么解决了

请教大指点指点~

这是我的代码:_

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());
    }
}

}

2个回答

91program
91program   Ds   Rxr 2016.02.03 17:18

看代码,确实不像对 super 的调用问题。
如果问题必现,建议你简化初始化部分的代码,特别是对 Fragment 的初始化。先分析出是什么代码引起的错误,再分析原因。

u010001503
u010001503   2016.02.05 09:34

onCreate()函数中没有调用super.onCreate() 函数。 记住这个系统回掉函数都要调用它的super方法,至于为什么只能简单说一下。比如activity的
onCreate()方法,该方法是系统调用的,我们可以覆写该方法来加载一些视图等等,但是一定还要记得调用super.onCreate()方法,因为系统会在
该方法中帮我们做一些初始化动作,若该方法没有被调用,系统就会抛出异常。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!