我有两个类:Server 类(普通 java 类)和 MainActivity 类(android 活动类)。我正在尝试使用 MainActivity 从 Server 类访问静态变量,但每次尝试使用静态变量时,它总是返回 null。
这是我的 Server 类代码:
public class Server {
private static String clientMsg;
public static String getClientMsg() {
return clientMsg;
}
public static void main(String[] args){
/*Some Server code here*/
while(true){
try {
clientSocket = serverSocket.accept();
//READ THE MESSAGE SENT BY CLIENT
dataInputStream = new DataInputStream(clientSocket.getInputStream());
//Here is where I assigned the static variable clientMsg
clientMsg = dataInputStream.readUTF();
dataOutputStream = new DataOutputStream(clientSocket.getOutputStream());
dataOutputStream.writeUTF("Message Received!");
} catch (IOException e) {
e.printStackTrace();
}
/* Rest of the code here */
}
}
}
这是我的 MainActivity 类的代码:
public class MainActivity extends FragmentActivity implements LocationListener{
private Button connect;
/*Some variable declarations here*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
connect = (Button) findViewById(R.id.connect);
/*Some code here*/
connect.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String msg = Server.getClientMsg();
if(msg != null)
Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG).show();
else
Toast.makeText(MainActivity.this, "Client Message is null!", Toast.LENGTH_LONG).show();
}
});
/*Rest of the code here*/
}
}
无论我如何从Server类访问静态变量clientMsg,它总是返回 null。
我在代码中做错了吗?我应该如何访问静态变量?或者它甚至不必是静态的,我如何简单地访问变量clientMsg而不返回空值?
/编辑/
抱歉,我的问题不清楚。我实际上是分别运行这 2 个类,一个作为纯 Java 显示在控制台中,另一个显示在 Android 模拟器中,最后,我在我的 android 手机中运行了一个客户端应用程序。
所以基本上,我使用客户端应用程序向服务器发送一条消息,该服务器将消息的值存储在clientMsg变量中。然后我尝试使用 System.out.println() 显示 clientMsg 的值,它可以工作!但是当我访问 MainActivity 中的变量时,它的值变为空。为什么会这样?