簡體   English   中英

執行套接字編程時java.lang.nullPointerException ..如何使用相同的套接字對象

[英]java.lang.nullPointerException while performing Socket programming..How to use same socket object

密碼.java

package com.example.vnc;

import java.io.IOException;
import java.io.PrintWriter;

import java.net.UnknownHostException;


import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class Password extends MainActivity{

 Button submit;
   EditText pass;
   String data;

  @Override
   public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.sec);
submit=(Button) findViewById(R.id.submit);
submit.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        pass=(EditText)findViewById(R.id.editText1);
        data=pass.getText().toString();

            try{
                PrintWriter out=new PrintWriter(soc.getOutputStream(),true);
                out.write(data);
                out.close();
            }
            catch(UnknownHostException e)
            {
                e.printStackTrace();
            }
            catch (IOException e) {
                 e.printStackTrace();
                }



    Intent next2=new Intent(Password.this,Security.class);
        startActivity(next2);
    }
});

}

MainActivity.java

   package com.example.vnc;

   import java.io.IOException;
   import java.net.Socket;
   import java.net.UnknownHostException;

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;

    public class MainActivity extends Activity
    {
   Button connect;
   EditText ipadd,portadd;
   Socket soc;
    String ip,port;
      int port1;
     public void onCreate(Bundle savedInstanceState){
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
  connect=(Button) findViewById(R.id.button1);
  connect.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        ipadd=(EditText) findViewById(R.id.editText1);
        portadd=(EditText) findViewById(R.id.editText2);
        ip=ipadd.getText().toString();
        port=portadd.getText().toString();
        port1=Integer.parseInt(port);

    new Thread(new Runnable()
    {
        public void run()
        {
        try{
            soc=new Socket(ip,port1);
        }
        catch(UnknownHostException e)
        {
            e.printStackTrace();
        }
        catch (IOException e) {
             e.printStackTrace();
            }
        }
    }).start();

        Toast.makeText(MainActivity.this,"Connecting to Server"+ip,Toast.LENGTH_LONG).show();

        Intent next1=new Intent(MainActivity.this,Password.class);

        startActivity(next1);

    }
  });
}

}

這是在android中。 MainActivity類具有Socket連接,我正在擴展MainActivity類。 我在printwriter使用相同的socket soc,它在printwriter行給了我錯誤null指針異常。

請告訴我應該怎么做? 我如何在2類上使用相同的套接字

Password實例與MainActivity實例不同。 因此,它們不共享狀態,因此soc實例var為空。 您可能嘗試在啟動“ Password活動時將其傳遞。 您可以使用Intent.putExtra做到這Intent.putExtra

暫無
暫無

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

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