-2

Этот код был написан после этого урока: http://www.techsono.com/consult/update-android-gui-timer/Почему я получаю незаконное исключение аргумента из этого кода?

Я не понимаю, почему я получаю незаконное исключение аргумента из этого кода, когда я пытаюсь и запустить его на устройстве. Я не уверен, что вызывает исключение из-за незаконных аргументов. Код, который я запускаю, - это моя попытка сделать клиент, который подключается к серверу по IP-адресу (этот IP-адрес будет изменен), чтобы получать информацию, а затем обновлять Android Gui, чтобы показать указанную информацию. Текстовые представления в стартовом макете - это то, что обновляется в gui, если это помогает?

Я извиняюсь заранее, если мое объяснение этого кажется немного запутанным, его просто очень запутывает для меня: 3 Я думаю, что понимаю, что делают коды, но какие-либо разъяснения в коде и почему он не работает, и что проблема была бы большой.

Heres мой код:

package com.example.clienttest; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.Socket; 
import java.util.Timer; 
import java.util.TimerTask; 
import java.util.concurrent.TimeUnit; 

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.Menu; 
import android.widget.TextView; 

public class ClientTestMain extends Activity { 

final Handler myHandler = new Handler(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_client_test_main); 


    Timer myTimer = new Timer(); 
    myTimer.schedule(new TimerTask(){ 
     @Override 
     public void run(){ 
      UpdateGUI();}},0,0); 
     } 


final Runnable myRunnable = new Runnable(){ 
      @Override 
      public void run(){ 

       TextView Header = (TextView) findViewById(R.id.textView4); 
       TextView Time = (TextView) findViewById(R.id.textView4); 
       TextView TrackId = (TextView) findViewById(R.id.textView4); 
       TextView Latitude = (TextView) findViewById(R.id.textView4); 
       TextView Longitude = (TextView) findViewById(R.id.textView4); 
       TextView Depth = (TextView) findViewById(R.id.textView4); 
       TextView Speed = (TextView) findViewById(R.id.textView4); 
       TextView Heading = (TextView) findViewById(R.id.textView4); 

       try{ 
        while(true){ 
        Socket infoSocket = new Socket("128.23.1.0", 2000); 
        InputStreamReader stream = new InputStreamReader(infoSocket.getInputStream()); 
        BufferedReader reader = new BufferedReader(stream); 
        String message = reader.readLine(); 
        String[] op = message.split(","); 
        Header.setText(op[0]); 
        Time.setText(op[1]); 
        TrackId.setText(op[2]); 
        Latitude.setText(op[3]); 
        Longitude.setText(op[4]); 
        Depth.setText(op[5]); 
        Speed.setText(op[6]); 
        Heading.setText(op[7]); 
        TimeUnit.SECONDS.sleep(1); 
        } 
       }catch(IOException ex){ 
        ex.printStackTrace(); 
       }catch (InterruptedException e) { 
       } 

      }}; 



    private void UpdateGUI(){ 
     myHandler.post(myRunnable); 
    } 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.client_test_main, menu); 
    return true; 
} 

} 

Heres мой LogCat:

09-04 12:04:23.453: D/AndroidRuntime(18628): Shutting down VM 
09-04 12:04:23.453: W/dalvikvm(18628): threadid=1: thread exiting with uncaught exception (group=0x40bea1f8) 
09-04 12:04:23.453: E/AndroidRuntime(18628): FATAL EXCEPTION: main 
09-04 12:04:23.453: E/AndroidRuntime(18628): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.clienttest/com.example.clienttest.ClientTestMain}: java.lang.IllegalArgumentException 
09-04 12:04:23.453: E/AndroidRuntime(18628): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1970) 
09-04 12:04:23.453: E/AndroidRuntime(18628): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995) 
09-04 12:04:23.453: E/AndroidRuntime(18628): at android.app.ActivityThread.access$600(ActivityThread.java:128) 
09-04 12:04:23.453: E/AndroidRuntime(18628): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161) 
09-04 12:04:23.453: E/AndroidRuntime(18628): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-04 12:04:23.453: E/AndroidRuntime(18628): at android.os.Looper.loop(Looper.java:137) 
09-04 12:04:23.453: E/AndroidRuntime(18628): at android.app.ActivityThread.main(ActivityThread.java:4514) 
09-04 12:04:23.453: E/AndroidRuntime(18628): at java.lang.reflect.Method.invokeNative(Native Method) 
09-04 12:04:23.453: E/AndroidRuntime(18628): at java.lang.reflect.Method.invoke(Method.java:511) 
09-04 12:04:23.453: E/AndroidRuntime(18628): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 
09-04 12:04:23.453: E/AndroidRuntime(18628): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
09-04 12:04:23.453: E/AndroidRuntime(18628): at dalvik.system.NativeStart.main(Native Method) 
09-04 12:04:23.453: E/AndroidRuntime(18628): Caused by: java.lang.IllegalArgumentException 
09-04 12:04:23.453: E/AndroidRuntime(18628): at java.util.Timer.schedule(Timer.java:479) 
09-04 12:04:23.453: E/AndroidRuntime(18628): at com.example.clienttest.ClientTestMain.onCreate(ClientTestMain.java:28) 
09-04 12:04:23.453: E/AndroidRuntime(18628): at android.app.Activity.performCreate(Activity.java:4465) 
09-04 12:04:23.453: E/AndroidRuntime(18628): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053) 
09-04 12:04:23.453: E/AndroidRuntime(18628): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934) 
09-04 12:04:23.453: E/AndroidRuntime(18628): ... 11 more 
09-04 12:09:29.781: I/Process(18628): Sending signal. PID: 18628 SIG: 9 
+0

что линия 28 'ClientTestMain.java' Ваши милли секунд также 0 – Raghunandan

ответ

1

Вы не можете передать значение периода = 0

Броски

IllegalArgumen tException, если задержка < 0 или период < = 0.

IllegalStateException, если таймер был отменен или задание было запланировано или отменено.

myTimer.schedule(new TimerTask(){ 
     @Override 
     public void run(){ 
      UpdateGUI();}},0,1000); //UPDATE HERE 
     } 
+0

хорошо вы думаете, что это единственная проблема? : D – user2682570

+0

@ user2682570 Я думаю, что лучше использовать обработчик вместо timertask – Raghunandan

+0

мой бог хорошо, что было просто: 3: L cheers :) – user2682570

Смежные вопросы