0

私のアプリは正常に起動しますが、送信ボタンを押すと強制終了します。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: キャッチされない例外で終了するスレッド (group=0x40019560) 07-14 19:32:39.752: E/AndroidRuntime(16712): 致命的な例外: メイン07-14 19:32:39.752: E/AndroidRuntime(16712): java.lang.IllegalStateException: ビュー クラス android の onClick ハンドラのアクティビティ クラス com.dillonregi.spamsms.Main でメソッド sms(View) が見つかりませんでした。 ID 'psend' の widget.Button 07-14 19:32:39.752: E/AndroidRuntime(16712): android.view.View$1.onClick(View.java:2143) 07-14 19:32:39.752: E /AndroidRuntime(16712): android.view.View.performClick(View.java:2497) 07-14 19:32:39.752: E/AndroidRuntime(16712): 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(Looper.java) :130) 07-14 19:32:39.752: E/AndroidRuntime(16712): android.app.ActivityThread.main(ActivityThread.java:3701) 07-14 19:32:39.752: E/AndroidRuntime(16712): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) 07-14 19:32:39.752: E/AndroidRuntime(16712): java.lang.reflect.Method.invoke(Method.java:507) 07-14 19:32:39.752: E/AndroidRuntime(16712): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:895) 07-14 19:32:39.752: E/AndroidRuntime(16712): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:653) 07-14 19:32:39.752: E/AndroidRuntime(16712): dalvik.system.NativeStart.main(ネイティブ メソッド) 07-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): java.lang.Class.getMethod(Class.java:962) 07-14 19:32:39.752: E/AndroidRuntime(16712): android.view で。 View$1.onClick(View.java:2136) 07-14 19:32:39.752: E/AndroidRuntime(16712): ... 11 より 07-14 19:32:39.752: E/AndroidRuntime(16712): [青エラー ハンドラ] メイン 07-14 19:32:39.752 のデバッグ レポート ファイルを作成します: E/AndroidRuntime(16712): java.lang.IllegalStateException: アクティビティ クラス com.dillonregi.spamsms でメソッド sms(View) が見つかりませんでした。 ID 'psend' 07-14 19:32:39.752 のビュー クラス android.widget.Button の onClick ハンドラのメイン: E/AndroidRuntime(16712): android.view.View$1 で。onClick(View.java:2143) 07-14 19:32:39.752: E/AndroidRuntime(16712): android.view.View.performClick(View.java:2497) 07-14 19:32:39.752: E/ AndroidRuntime(16712): 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(Looper.java:130) 07-14 19:32:39.752: E/AndroidRuntime(16712): android.app.ActivityThread.main(ActivityThread.java:3701) 07-14 19 :32:39.752: E/AndroidRuntime(16712): at java.lang.reflect.Method.invokeNative(Native Method) 07-14 19:32:39.752: E/AndroidRuntime(16712): at java.lang.reflect.Method .invoke(Method.java:507) 07-14 19:32:39。752: E/AndroidRuntime(16712): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:895) 07-14 19:32:39.752: E/AndroidRuntime(16712): com.android で.internal.os.ZygoteInit.main(ZygoteInit.java:653) 07-14 19:32:39.752: E/AndroidRuntime(16712): dalvik.system.NativeStart.main(ネイティブ メソッド) 07-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): java.lang.Class.getMethod(Class.java:962) 07-14 19:32:39.752: E/AndroidRuntime(16712): Android で。 view.View$1.onClick(View.java:2136) 07-14 19:32:39.752: E/AndroidRuntime(16712): ... 11 もっと見るZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:895) 07-14 19:32:39.752: E/AndroidRuntime(16712): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:653) 07-14 19:32:39.752: E/AndroidRuntime(16712): dalvik.system.NativeStart.main(Native Method) 07-14 19:32:39.752: E/AndroidRuntime(16712): 原因: java.lang.NoSuchMethodException: sms 07-14 19:32:39.752: E/AndroidRuntime(16712): java.lang.ClassCache.findMethodByName(ClassCache.java:247) 07-14 19:32:39.752: E/AndroidRuntime(16712): Java で.lang.Class.getMethod(Class.java:962) 07-14 19:32:39.752: E/AndroidRuntime(16712): android.view.View$1.onClick(View.java:2136) 07-14 19: 32:39.752: E/AndroidRuntime(16712): ... 11 詳細ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:895) 07-14 19:32:39.752: E/AndroidRuntime(16712): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:653) 07-14 19:32:39.752: E/AndroidRuntime(16712): dalvik.system.NativeStart.main(Native Method) 07-14 19:32:39.752: E/AndroidRuntime(16712): 原因: java.lang.NoSuchMethodException: sms 07-14 19:32:39.752: E/AndroidRuntime(16712): java.lang.ClassCache.findMethodByName(ClassCache.java:247) 07-14 19:32:39.752: E/AndroidRuntime(16712): Java で.lang.Class.getMethod(Class.java:962) 07-14 19:32:39.752: E/AndroidRuntime(16712): android.view.View$1.onClick(View.java:2136) 07-14 19: 32:39.752: E/AndroidRuntime(16712): ... 11 詳細メイン (ZygoteInit.java:653) 07-14 19:32:39.752: E/AndroidRuntime (16712): dalvik.system.NativeStart.main (ネイティブ メソッド) 07-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): java.lang.Class.getMethod(Class.java:962) 07-14 19:32:39.752: E/AndroidRuntime(16712): android.view.View$1.onClick( View.java:2136) 07-14 19:32:39.752: E/AndroidRuntime(16712): ... 11 もっと見るメイン (ZygoteInit.java:653) 07-14 19:32:39.752: E/AndroidRuntime (16712): dalvik.system.NativeStart.main (ネイティブ メソッド) 07-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): java.lang.Class.getMethod(Class.java:962) 07-14 19:32:39.752: E/AndroidRuntime(16712): android.view.View$1.onClick( View.java:2136) 07-14 19:32:39.752: E/AndroidRuntime(16712): ... 11 もっと見るfindMethodByName(ClassCache.java:247) 07-14 19:32:39.752: E/AndroidRuntime(16712): 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 もっと見るfindMethodByName(ClassCache.java:247) 07-14 19:32:39.752: E/AndroidRuntime(16712): 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 もっと見る

4

2 に答える 2

0

まず、質問を更新してコードをフォーマットする必要があります。
次に、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 を作成しますが、execute() メソッドを呼び出しているようには見えません。execute() を呼び出して実行してみてください。

更新: Handler を使用して Toast を作成したり、UI スレッドで何かを実行したりできます。

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

しかし、AsyncTaskHandlerのドキュメントを読んで、それらの使用方法を理解することをお勧めします。

于 2012-07-15T00:49:21.507 に答える
0

SMS メソッドのメソッド署名が間違っています。レイアウト ファイルで割り当てられている場合は、View 引数を取る必要があります。

public void sms(View view) {
    // code to run when button is clicked
}
于 2012-07-15T00:40:23.057 に答える