在android清单中没有默认构造函数

我的应用程序一直崩溃,它说:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Hugler/com.Hugler.ActMain}: android.content.ActivityNotFoundException: Unable to find explicit activity class {/com.Hugler.CB.SoundClsRslt}; have you declared this activity in your AndroidManifest.xml? 

我在我的android清单文件中声明了活动,但是有一个错误说“’com.Hugler.CB.SoundClsRslt’没有默认构造函数”

                 

这是我的SoundClsRslt代码:

  package com.Hugler.CB; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.ShortBuffer; import java.nio.channels.FileChannel; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import com.Hugler.ActMain; import com.Hugler.TeleOp.TeleOp; import com.SoundClassification.SoundClassification.ISC; import android.app.Activity; import android.content.Intent; import android.os.Environment; import android.telephony.SmsManager; public class SoundClsRslt extends Activity implements ISC { public static int interact; private ActMain m_pMain; private static int m_iID; private static int m_iID1; private FileOutputStream _fLog; public SoundClsRslt(ActMain pMain) { m_pMain = pMain; m_iID = 0; m_iID1 = 0; _fLog = null; } public void StartLog(String sFile) { if (_fLog != null) return; try { _fLog = new FileOutputStream(sFile); String sHdr = "Time,Event,Confidence\n"; _fLog.write(sHdr.getBytes()); } catch (Exception e) { e.printStackTrace(); } } public void OnLog(String sLog) { } public void OnLog2(String sLog) { } public void OnSegment(double[] pBuf, int iLen, String sCls, double dConf) { sCls = sCls.toLowerCase(Locale.getDefault()); { if (sCls.contains("glass")) { m_iID1++; m_pMain.Show2(m_iID1 + "." + sCls); m_pMain.Show3("" + dConf); //convert short to byte ByteBuffer myByteBuffer = ByteBuffer.allocate(iLen * 2); myByteBuffer.order(ByteOrder.LITTLE_ENDIAN); //open pcm ShortBuffer myShortBuffer = myByteBuffer.asShortBuffer(); for (int i = 0; i < iLen ; i++) { myShortBuffer.put((short)(pBuf[i])); } File file; FileChannel out = null; try { String filepath = Environment.getExternalStorageDirectory().getPath(); SimpleDateFormat pSDF = new SimpleDateFormat("yyyyMMdd_HH_mm_ss", Locale.UK); String sNow = pSDF.format(new Date()); file = new File(filepath,"AudioRecorder" + "/segment_" + sNow + ".pcm"); Intent intent = getIntent(); SimpleDateFormat smsdate = new SimpleDateFormat("yyyy/MM/dd_HH:mm:ss", Locale.US); String messageToSend = "Glass breaking sound detected at "+ smsdate.format(new Date()) + " (yyyy/MM/dd_HH:mm:ss)"; String number = intent.getExtras().getString("numberfrom"); SmsManager.getDefault().sendTextMessage(number, null, messageToSend, null, null); // if file doesnt exists, then create it if (!file.exists()) { file.createNewFile(); } out = new FileOutputStream(file).getChannel(); //write to pcm out.write(myByteBuffer); //close pcm out.close(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (out != null) { out.close(); } } catch (IOException e) { e.printStackTrace(); } } } else { m_iID++; m_pMain.Show0(m_iID + "." + sCls); m_pMain.Show1("" + dConf); } } TeleOp.SendInteraction(); if (_fLog != null) { SimpleDateFormat pSDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US); String sNow = pSDF.format(new Date()); String sLog = sNow + "," + sCls + "," + dConf + "\n"; try { _fLog.write(sLog.getBytes()); } catch (IOException e) { e.printStackTrace(); } } } } 

如何以及在何处添加空构造函数? 提前致谢! 🙂

public SoundClsRslt(ActMain pMain)您的public SoundClsRslt(ActMain pMain)构造函数,因为您不打算自己实例化此类(您没有显式实例化Activity子类),并且Android不会使用该构造函数来创建新活动。

如果你删除那个构造函数(允许生成默认的无参数构造函数),或者只是删除它的参数,你将拥有一个无参数构造函数,这是你需要的。