当前位置: 首页 > 知识库问答 >
问题:

IllegalStateException:在Android的activity类中找不到方法sms(View)

赫连睿
2023-03-14

我的应用程序启动良好,但按下发送按钮后,它强制关闭。在Eclipse中没有“问题”...我认为这是导致错误的代码:

public void sms() {
    Toast.makeText(this, "sms()", Toast.LENGTH_SHORT).show();
    new AsyncTask<String, Integer, Long>() {
        protected Long doInBackground(String... params){
            EditText number = (EditText) Main.this.findViewById(R.id.pnumber);
            EditText message = (EditText) Main.this.findViewById(R.id.pmessage);
            EditText hmany = (EditText) Main.this.findViewById(R.id.hmany);
            String _hmany = hmany.getText().toString();
            final String _number = number.getText().toString();
            final String _message = message.getText().toString();
            final int xtime = Integer.parseInt(_hmany);
            Toast.makeText(null, "number: " + _number + " message: " + _message + " xtime: " + xtime, Toast.LENGTH_LONG).show();
            long totalSize = 0; 
            for (int i = 0; i < xtime; i++) {       
                SmsManager.getDefault().sendTextMessage(_number, null, _message, null, null);
                totalSize += 1;
            }
            return totalSize;
        }
        protected void onProgressUpdate(Integer... progress) {
    }
    protected void onPostExecute(Long result) {
        Toast.makeText(null, "number of texts sent will end up going here. maybe add + totalSize after the quotes?", Toast.LENGTH_LONG).show();
    }
}; 
}

下面是logcat:

07-14 19:32:39.742:W/Dalvikvm(16712):Threadid=1:线程以未捕获异常退出(组=0x40019560)07-14 19:32:39.752:E/AndroidRuntime(16712):致命异常:主文07-14 19:32:39.752:E/AndroidRuntime(16712):java.lang.IllegalStateException:在id为“psend”的视图类Android.Widget.Button上的onClick处理程序的活动类com.dillonregi.spamsms.main中找不到方法sms(View)07-14 19:32:39.752:e/AndroidRuntime(16712):at Android.View.View.View$1.onClick(View.java:2497)07-14 19:32:39.752:e/AndroidRuntime(16712):at在Android.View.View$performClick.run(View.java:9120)07-14 19:32:39.752:e/AndroidRuntime(16712):在Android.os.handler.handleCallback(handler.java:587)07-14 19:32:39.752:e/AndroidRuntime(16712):在Android.os.handler.dispatchMessage(handler.java:92)07-14 19:32:39.752:e/AndroidRuntime(16712):在Android.os.looper.loop(12):at android.app.activitythread.main(activitythread.java:3701)07-14 19:32:39.752:e/androidruntime(16712):at java.lang.reflect.method.invokenative(原生方法)07-1419:32:39.752:E/AndroidRuntime(16712):at java.lang.reflect.Method.invoke(Method.java:507)07-14 19:32:39.752:e/androidruntime(16712):at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:895)07-14 19:32:39.752:e/androidruntime(16712):at com.android.internal.os.zygoteinite.main(zygoteinit.java:653)07-14 14 19:32:39.752:E/AndroidRuntime(16712):原因:java.lang.NosuchMethodException:sms 07-14 19:32:39.752:E/AndroidRuntime(16712):at java.lang.ClassCache.FindMethodByName(classcache.java:247)07-14 19:32:39.752:E/AndroidRuntime(16712):at java.lang.Class.GetMethod(class.java:962)07-14 19:32:39.752:E/AndroidRuntime(16712):at 752:E/AndroidRuntime(16712):...11更多07-14 19:32:39.752:E/AndroidRuntime(16712):[蓝色错误处理程序]制作main的调试报告文件07-14 19:32:39.752:E/AndroidRuntime(16712):java.lang.IllegalStateException:在id为'psend'07-14 19:32:39.752的视图类Android.Widget.Button上的onClick处理程序的活动类com.dillonregi.spamsms.main中找不到方法sms(View):E/AndroidRuntime(16712):at Android.view.view$1.onClick(view.java:2143)07-14 19:32:39.752:e/AndroidRuntime(16712):at Android.view.view.performClick(view.java:2497)07-14 19:32:39.752:e/AndroidRuntime(16712):at Android.view.view$performClick.run(view.java:9120)07-14 19:32:39.752:e/AndroidRuntime(16712):at 752:e/AndroidRuntime(16712):at android.os.handler.dispatchMessage(handler.java:92)07-14 19:32:39.752:e/AndroidRuntime(16712):at android.os.looper.loop(looper.java:130)07-14 19:32:39.752:e/AndroidRuntime(16712):at android.app.activitythread.main(activitythread.java:3701)07-14 19:32:39.752:e/AndroidRuntime(16712):at.752:e/androidruntime(16712):at java.lang.reflect.Method.invoke(Method.java:507)07-14 19:32:39.752:e/androidruntime(16712):at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:895)07-14 19:32:39.752:E/AndroidRuntime(16712):at com.android.internal.os.zygoteinit.main(zygoteinit.java:653)07-14 19:32:39.752:E/AndroidRuntime(16712):at dalvik.system.nativeStart.main(原生方法)07-14 19:32:39.752:E/AndroidRuntime(16712):at dalvik.system.nativeStart.main(原生方法)07-14 19:32:39.752:E/AndroidRuntime(16712):by:2:39.752:e/AndroidRuntime(16712):at java.lang.class.getMethod(class.java:962)07-14 19:32:39.752:e/AndroidRuntime(16712):at Android.view.view$1.onclick(View.java:2136)07-14 19:32:39.752:e/AndroidRuntime(16712):...11更多

共有1个答案

洪富
2023-03-14

首先,您应该更新您的问题以格式化您的代码。
其次,您试图触摸AsycnTask的doInBackground()中的UI线程。不要这样做:

Toast.makeText(null, "number: " + _number + " message: " + _message + " xtime: " + xtime,    Toast.LENGTH_LONG).show();

第三,尝试这样声明sms方法:

public void sms(View view) {
    //your code goes here  
}

最后,您创建了新的AsyncTask,但我没有看到您调用excute()方法。尝试调用excute()来执行

 //put this Handler in your activity, out site the AsyncTask.(**important**)
 final Handler mHandler = new Handler();

 //Then call it in doInBackground() of AsyncTask to show a Toast.
 protected Long doInBackground(String... params){
     EditText number = (EditText) Main.this.findViewById(R.id.pnumber);
     EditText message = (EditText) Main.this.findViewById(R.id.pmessage);
     EditText hmany = (EditText) Main.this.findViewById(R.id.hmany);
     String _hmany = hmany.getText().toString();
     final String _number = number.getText().toString();
     final String _message = message.getText().toString();
     final int xtime = Integer.parseInt(_hmany);

     //Show a Toast
     mHandler.post(new Runnable() {
       public void run() {
       Toast.makeText(null, "number: " + _number + " message: " + _message + " xtime: " + xtime, Toast.LENGTH_LONG).show(); 
       }
     );
 }
 类似资料:
  • 我到处都读--找不到解决办法。 我的项目运行良好,我在XML文件中声明了我希望调用到onClick的方法,如下所示:

  • 分级同步消息为: 错误:(24,0)找不到Gradle DSL方法:“Android()”可能的原因: 我不太确定这个方法到底在哪里。如果它是位于应用程序的文件中的一个,我仍然不知道从这里到哪里去。感谢任何帮助。

  • 我得到一个错误: 错误:在类testPackage.Method1中找不到Main方法,请将Main方法定义为:public static void Main(字符串[]args)或JavaFX应用程序类必须扩展JavaFX.application.application“ 该计划是:

  • 嗨。我刚到爪哇。我正试图写一个继承程序,得到这个错误。 错误:在类myPackage.inheritage中找不到Main方法,请将Main方法定义为:public static void Main(string[]args)或JavaFX应用程序类必须扩展JavaFX.application.application

  • 任何解决此问题的建议:我在android studio导入Project后得到此错误 错误:(16,0)找不到Gradle DSL方法:'android()'可能原因: 有一个条形通知,上面写着:Gradle项目同步失败。基本功能(如:编辑,调试)将不能正常工作。 请帮我解决这个问题。谢了!

  • 问题内容: 我正在尝试制作一个订购咖啡的应用程序。(我真的很陌生。) 我的应用程序运行良好,直到出现两个错误。现在,它可以在设备中运行,但是当您尝试触摸按钮时,它将停止。 代码是: XML代码: 终端中的第一个错误: 和主要错误: 问题答案: 改变这条线 对此: 要么: