2014-04-20 3 views
1

버튼 클릭시 doInBackground에 사용할 AsyncTask를 통해 정수를 전달하려고합니다.AsyncTask - android를 통한 매개 변수 전달

04-20 19:10:43.198: E/AndroidRuntime(4363): FATAL EXCEPTION: main 
04-20 19:10:43.198: E/AndroidRuntime(4363): java.lang.IllegalStateException: Could not execute method of the activity 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at android.view.View$1.onClick(View.java:3633) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at android.view.View.performClick(View.java:4240) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at android.view.View$PerformClick.run(View.java:17721) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at android.os.Handler.handleCallback(Handler.java:730) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at android.os.Handler.dispatchMessage(Handler.java:92) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at android.os.Looper.loop(Looper.java:137) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at android.app.ActivityThread.main(ActivityThread.java:5103) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at java.lang.reflect.Method.invoke(Method.java:525) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at dalvik.system.NativeStart.main(Native Method) 
04-20 19:10:43.198: E/AndroidRuntime(4363): Caused by: java.lang.reflect.InvocationTargetException 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at java.lang.reflect.Method.invoke(Method.java:525) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at android.view.View$1.onClick(View.java:3628) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  ... 11 more 
04-20 19:10:43.198: E/AndroidRuntime(4363): Caused by: java.lang.NumberFormatException: Invalid int: "android.widget.EditText{41754410 VFED..CL .F...... 32,110-736,188 #7f080002 app:id/txtInput}" 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at java.lang.Integer.invalidInt(Integer.java:138) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at java.lang.Integer.parse(Integer.java:375) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at java.lang.Integer.parseInt(Integer.java:366) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at java.lang.Integer.parseInt(Integer.java:332) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  at com.example.asyncfinalpractice.MainActivity.go(MainActivity.java:30) 
04-20 19:10:43.198: E/AndroidRuntime(4363):  ... 14 more 
: 나는

private class ProcessTask extends AsyncTask<Integer, Integer, Void>{ 

@Override 
protected Void doInBackground(Integer... params) { 
    // TODO Auto-generated method stub 

    Integer myD = params[1]; 


    for(int i = 0; i<myD; i++){ 
     try{ 
      Thread.sleep(params[0]); 
      publishProgress(i+1); 
     }catch (InterruptedException e){ 
      e.printStackTrace(); 
     } 
    } 
    return null; 
} 

을 통과하는 같은 값 나는 다음과 같은 오류가 점점 계속 사용하려고 여기 어디에

내가 여기에있는 매개 변수

public void go(View view) { 

    EditText input = (EditText)findViewById(R.id.txtInput); 

    int downloads = Integer.parseInt(input.toString()); 

    ProcessTask myTask = new ProcessTask(); 

    //5000 - number of Ms to simulate download 

    myTask.execute(5000, downloads); 

} 

을 전달하고있다

모든 도움을 주시면 감사하겠습니다. 나는 안드로이드에 처음 익숙하다.

답변

1

메소드 체이닝에서 getText() 호출이 누락되었습니다.

input.getText().toString()이어야합니다.

잘못된 INT는 :

단서는 로그 캣 출력입니다. "android.widget.EditText {... 확실히 하지 귀하의 의견

입니다 들어

숫자 구문 분석, 나는 실제로는 catch 예외를 지정하는 것이 좋습니다. 그런 식으로 필터를 잊어 버린 모든 입력은 프로그램을 크래시하지 않습니다.

+1

정말 고마워! 그것은 때때로 당신이 그리워하는 작은 것들입니다. – Bobby

+0

하하, 정확히는 :-) –