簡體   English   中英

Android-Java客戶端-服務器-AsyncTask崩潰應用程序中的Toast

[英]Android-Java Client-Server - Toast in AsyncTask crashing application

我有2個正在通過AsyncTask進行通信的應用程序。 第一個應用程序是運行在我的PC上的Java服務器。 第二個應用程序是一個Android客戶端。

服務器向客戶端發送如下消息:

“ 1stMember,2ndMember,3rdMember,...,10thMember”

然后,客戶端從客戶端類的內部類connectTask中檢索此消息。 但是應用程序總是崩潰。

這是我的客戶端MainActivity.java

public class MainActivity extends FragmentActivity
{
    private TCPClient tcpclient;

    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Connect to server - See innerClass connectTask below
        new connectTask().execute("");
    }

    public class connectTask extends AsyncTask<String, String, TCPClient>
    {
        protected TCPClient doInBackground(String... message)
        {
            // Creation of TCPClient object...
            tcpclient=new TCPClient(new TCPClient.OnMessageReceived() 
            {
                public void messageReceived(String message) 
                {
                    publishProgress(message);
                    /*==> publishProgress receive message, then notify onProgressUpdate*/
                }
            });
            tcpclient.runClient();
            return null;
        }

        protected void onProgressUpdate(String...values)
        {
            super.onProgressUpdate(values);
            showMySelectedValues(values[0].toString());     
        }
    }

    public void showMySelectedValues(String values)
    {
        String[]selectedvalues=values.split(",");
        Log.i("LENGTH OF selectedvalues... : ",""+selectedvalues.length);
        Toast.makeText(getApplicationContext(),selectedvalues[3],Toast.LENGTH_SHORT).show();                        Toast.makeText(getApplicationContext(),selectedvalues[5],Toast.LENGTH_SHORT).show();

    }   
}

在崩潰之前,該應用程序仍然向我展示了吐司。 這是我的Logcat:

在此處輸入圖片說明

12-11 16:09:33.070: D/dalvikvm(11798): GC_FOR_ALLOC freed 5K, 12% free 9455K/10695K, paused 28ms, total 28ms
12-11 16:09:35.914: I/LENGTH OF selectedvalues... :(11798): 12
12-11 16:09:35.945: I/LENGTH OF selectedvalues... :(11798): 12
12-11 16:09:35.953: I/LENGTH OF selectedvalues... :(11798): 12
12-11 16:09:35.976: I/LENGTH OF selectedvalues... :(11798): 1
12-11 16:09:35.976: D/AndroidRuntime(11798): Shutting down VM
12-11 16:09:35.976: W/dalvikvm(11798): threadid=1: thread exiting with uncaught exception (group=0x4104f2a0)
12-11 16:09:35.984: E/AndroidRuntime(11798): FATAL EXCEPTION: main
12-11 16:09:35.984: E/AndroidRuntime(11798): java.lang.ArrayIndexOutOfBoundsException: length=1; index=3
12-11 16:09:35.984: E/AndroidRuntime(11798):    at com.fiamm.tcpandroid.MainActivity.showMySelectedValues(MainActivity.java:154)
12-11 16:09:35.984: E/AndroidRuntime(11798):    at com.fiamm.tcpandroid.MainActivity$connectTask.onProgressUpdate(MainActivity.java:145)
12-11 16:09:35.984: E/AndroidRuntime(11798):    at com.fiamm.tcpandroid.MainActivity$connectTask.onProgressUpdate(MainActivity.java:1)
12-11 16:09:35.984: E/AndroidRuntime(11798):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:647)
12-11 16:09:35.984: E/AndroidRuntime(11798):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-11 16:09:35.984: E/AndroidRuntime(11798):    at android.os.Looper.loop(Looper.java:137)
12-11 16:09:35.984: E/AndroidRuntime(11798):    at android.app.ActivityThread.main(ActivityThread.java:4895)
12-11 16:09:35.984: E/AndroidRuntime(11798):    at java.lang.reflect.Method.invokeNative(Native Method)
12-11 16:09:35.984: E/AndroidRuntime(11798):    at java.lang.reflect.Method.invoke(Method.java:511)
12-11 16:09:35.984: E/AndroidRuntime(11798):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
12-11 16:09:35.984: E/AndroidRuntime(11798):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
12-11 16:09:35.984: E/AndroidRuntime(11798):    at dalvik.system.NativeStart.main(Native Method)

這是調試器 在此處輸入圖片說明

當我在onProgressUpdate(String ... values)中執行此操作時,它沒有崩潰:

protected void onProgressUpdate(String...values)
{
    super.onProgressUpdate(values);
    Toast.makeText(getApplicationContext(),selectedvalues[3],Toast.LENGTH_SHORT).show();
}

但是,當我做1個以上的吐司時應用程序又崩潰了

我不明白我的代碼有什么問題。 有人能幫助我嗎 ?

預先謝謝你。

最好的祝福,

豆腐

 java.lang.ArrayIndexOutOfBoundsException: length=1; index=3

長度為1。數組索引從0開始。

selectedvalues的長度為1。您正在嘗試訪問selectedvalues[3]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM