繁体   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