当前位置: 首页 > 面试题库 >

android.app.SuperNotCalledException:活动未调用到super.onCreate()

江嘉悦
2023-03-14
问题内容

这是我的Android媒体播放器代码。当我MediaPlayer mp = new MediaPlayer()Debug模式下以断点运行时,我不知道这段代码中缺少什么。文件zip夹中的所有文件都会播放。但是,当我以正常模式运行该应用程序时,会播放第一个文件,然后出现此错误:

android.app.SuperNotCalledException: Activity {com.example.mediaplayer/com.example.mediaplayer.MainActivity} did not call through to super.onCreate()

码:

package com.example.mediaplayer;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.apache.commons.io.IOUtils;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.widget.Button;

public class MainActivity extends Activity {     
    private MediaPlayer mp;    
    private static final String MAIN_TAG ="ERROR";

@Override
protected void onCreate(Bundle savedInstanceState) {
     try {
    //final String file_loc= Environment.getExternalStorageDirectory().toString();
    //Log.i("location",file_loc);
         ZipFile zip = new ZipFile("/storage/emulated/0/AjeshDocument/sample.zip");

         for(int i=1;i<7;i++){

         ZipEntry entry = zip.getEntry("sample/rihanna_"+i+".mp3");                        
         if (entry != null) {
             InputStream in = zip.getInputStream(entry);
             // see Note #3.
             File tempFile = File.createTempFile("_AUDIO_", ".wav");
             FileOutputStream out = new FileOutputStream(tempFile);
             IOUtils.copy(in, out);

             // do something with tempFile (like play it)
             File f = tempFile;   
             try {
                 if (f.exists())
                 {
                     Log.i(MAIN_TAG,"Audio file found!");
                     MediaPlayer mp = new MediaPlayer();
                     FileInputStream fis = new FileInputStream(f);
                     mp.setDataSource(fis.getFD());
                     mp.prepare();
                     //mp.setLooping(false);
                     mp.start();                         
                     //mp.stop();
                    // mp.release();
                     Log.i(MAIN_TAG,"Pronounciation finished!");
                 }


               else
                 {
                     Log.i(MAIN_TAG,"File doesn't exist!!");
                 }

             }
             catch (IOException e)
             {
                 Log.i(MAIN_TAG,e.toString());
             }
         }
         else {
             // no such entry in the zip
         }
        } //for end
         mp.release();

     }  
         catch (Exception e) {
         // handle your exception cases...

         Log.i(MAIN_TAG,e.toString());

     }

}

@Override
protected void onResume() {
    Log.w("Info", "App Resume");

    super.onResume();
}

@Override
protected void onStop() {
    Log.w("Info", "App stopped");

    super.onStop();
}

@Override
protected void onDestroy() {
     Log.w("Info", "App destoryed");

    super.onDestroy();
}

}

问题答案:

您没有调用ActivityonCreate()方法,即超类。将调用添加到MainActivityonCreate()方法中:

public class MainActivity extends Activity {

    private MediaPlayer mp;    
    private static final String MAIN_TAG ="ERROR";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); // this line is missing

    // your code below ...


 类似资料:
  • 编辑:这是我的舱单

  • 当应用程序处于活动状态时,所有操作都正常运行,但当没有任何活动运行时,我仍然通过firebase notification获得一个带有app_name和Body的通知,并打开MainActivity。 这是我的MyFirebaseMessagingService类:- 我看到了一个类似的问题,但对我的情况没有帮助。

  • inputText字段的代码如下所示; 到目前为止,我已经试着对包含面板进行了定时的部分刷新,我已经将typeahead模式从无设置为满。没什么区别。 除了每10分钟刷新一次页面之外,还有什么是夫妇造成的问题。仅供参考的是,实际的typeahead是正确工作一致的,它只是onchange事件停止发射。

  • 代码如下:- 产品片段: 我不知道我错在哪里。我已经搜索了错误,甚至尝试了以下链接的解决方案: Fragment MyFragment not attached to activity 我在SO上提出问题,但没有得到响应/答案。可能有一个小错误、语法/格式问题或重复问题,但我的案例可能与其他人的不同。 因此,请提供帮助并作出答复。 谢谢。 --编辑-- 家庭活动: 致命异常:主进程:com.pis

  • 我的代码: 我添加了部分来模拟下载数据。中的代码是模拟使用。 当我在横向和纵向之间快速旋转屏幕时,我在代码处得到一个异常: java.lang.IllegalStateException:片段MyFragment{410F6060}未附加到活动 我认为这是因为在此期间创建了一个新的,并且在完成之前附加到了活动。中的代码调用未附加的。

  • 我有一个包含服务方法的报警服务服务类。这些方法在警报服务激活时被调用。我想做的是调用这些方法中的另一个类的意图,这些方法在服务类中被调用(当警报关闭时)。它所做的只是在调用意图时标记错误。这只发生在激活警报服务时调用的方法中(服务类中的方法)。这是因为类而不是吗?我不确定,有什么想法吗? (以下是我的服务类,当在方法中调用另一个活动的意图时,应用程序强制关闭。) LogCat上的这些错误之一是: