[英]java.lang.nullPointerException while performing Socket programming..How to use same socket object
Password.java 密码.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 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);
}
});
}
} }
This is in android. 这是在android中。 the MainActivity class has Socket connection and I am extending the MainActivity class.
MainActivity类具有Socket连接,我正在扩展MainActivity类。 I am using the same socket soc at printwriter and it gives me error null pointer exception at printwriter line.
我在printwriter使用相同的socket soc,它在printwriter行给了我错误null指针异常。
Please tell me what to do? 请告诉我应该怎么做? how can I use same socket over 2 class
我如何在2类上使用相同的套接字
The instance of Password
is different from the MainActivity
instance. Password
实例与MainActivity
实例不同。 Hence they do nog share state, and thus the soc
instance var is empty. 因此,它们不共享状态,因此
soc
实例var为空。 You might try to pass it along when you start the Password
activity. 您可能尝试在启动“
Password
活动时将其传递。 You can do that using Intent.putExtra
. 您可以使用
Intent.putExtra
做到这Intent.putExtra
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.