【问题标题】:ProgressDialog wont go away! Nullpointer exceptionProgressDialog 不会消失!空指针异常
【发布时间】:2012-03-22 14:34:22
【问题描述】:

我为 android 2.3.3 制作了一个 android 套接字客户端应用程序。 它发送一个 XML 请求,然后从 cobol 套接字服务器收到一个回复​​。

当客户端应用程序连接到服务器、发送和接收数据时,我希望弹出一个进度对话框。

它确实会弹出(虽然有点晚了),但我无法在没有得到的情况下将其关闭 NullPointerException

我的代码:

.

public class OctopusActivity extends Activity implements OnClickListener 
{
    //My variables
    ProgressDialog progressDialog;


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        btn1 = (Button) findViewById(R.id.button1);
        btn1.setOnClickListener(this);

        Varenummer = (EditText) findViewById(R.id.editText1);
        Varetekst = (EditText) findViewById(R.id.editText2);
        Gruppe = (EditText) findViewById(R.id.editText3);
        Producent = (EditText) findViewById(R.id.editText4);
        Enhed = (EditText) findViewById(R.id.editText5);
        Pris = (EditText) findViewById(R.id.editText6);

    }
    class ClientThread implements Runnable 
    {   


        public void run() 

        {

            try 
            {
                Korer = true;
            Log.d("Nicklas", "Thread Igang");
            Socket socket = new Socket(serverIpAddress, serverPort);
            socket.setSoTimeout(5000);
            Log.d("Nicklas", "socket lavet");

                    PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
                    Log.d("Nicklas", "Printer Oprettet");

                    String request = ("XML Request");
                    out.println(request);
                    out.flush();

                    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                    Log.d("Nicklas", "Reader Oprettet");
                    Vector<String> v = new Vector<String>();
                    int i = 0;
                    Boolean KeepGoing = true;
                    while (KeepGoing)
                    {

                        try 
                        {
                            String lol = in.readLine();
                            if (lol.contains("</Answer>")) { KeepGoing = false; }
                            v.add(new String(lol));
                            i++;
                        }
                        catch (Exception e)
                        {
                            Log.d("NickEEEXX", e.toString());
                            KeepGoing = false;
                        }                       
                    } 

                    Log.d("Trolo", String.valueOf(i) );

                    in.close();
                    out.close();
                    socket.close();

                    String[] InputLinie = new String[i];

                    v.toArray(InputLinie);

                    // This is where i treat the data

                    Korer = false;
                    Log.d("NicklasMEH", "KAgemand!");
                   // The error comes on the following line: 
                    progressDialog.dismiss();

            }
            catch (Exception e)
            {
                Log.d("NicklasEx", e.toString());
                varetekst = "Kunne ikke forbinde til server";
                Korer = false;

            }

        }

    }
    @Override
    public void onClick(View v) 
    {
        // TODO Auto-generated method stub
            Varetekst.setText("");
            Gruppe.setText("");
            Producent.setText("");
            Enhed.setText("");
            Pris.setText("");
            Log.d("Nicklas", "Starter thread");
            progressDialog.show(this, "", "Loading");

            if (!Korer)
            {   
                Thread thread = new Thread(new ClientThread());
                thread.start();

            }

    }

}

所以我的问题是: 1. dialogprocess弹出有点晚。我希望它弹出,然后我希望线程开始。 2、progressDialog.dismiss();为什么会出现空指针异常?

如有任何帮助,将不胜感激。

【问题讨论】:

    标签: java android sockets nullpointerexception progressdialog


    【解决方案1】:

    你把你的progressDialog放在哪里?

    progressDialog =ProgressDialog.show(OctopusActivity.this,"title","message");
    

    【讨论】:

    • 变量在onCreate之上声明。然后在 onClick 方法中调用 .show(和线程)。
    • 您的线路刚刚修好!我改变了`progressDialog.show(this, "", "Loading"); ` to ` progressDialog = ProgressDialog.show(OctopusActivity.this,"title","message"); ` 现在它可以完美运行了!谢谢
    猜你喜欢
    • 2015-07-12
    相关资源
    最近更新 更多