我想将我的Activity类中的字符串数据传递给一个TCPClient类的类。所以基本上,这个字符串包含用户从我的Activity类视图输入的IP地址。然后作为回报我需要将IP地址传递给TCPClient类。
以下是我正在处理的代码。
MainActivity.class:
String add1 = etIPAddress1.getText().toString();
String add2 = etIPAddress2.getText().toString();
String add3 = etIPAddress3.getText().toString();
String add4 = etIPAddress4.getText().toString();
String new_IPAddress = add1 + "." + add2 + "." + add3 + "." + add4;
Log.d("E", new_IPAddress);
TCPClient.class:
public class TCPClient {
private String serverMessage;
//public static final String SERVERIP = "192.168.254.105"; //your computer IP address
public static final String SERVERIP = "";
public static final int SERVERPORT = 4444;
private OnMessageReceived mMessageListener = null;
private boolean mRun = false;
PrintWriter out;
BufferedReader in;
/**
* Constructor of the class. OnMessagedReceived listens for the messages received from server
*/
public TCPClient(OnMessageReceived listener) {
mMessageListener = listener;
}
这里有人知道怎么做吗?我很乐意感谢你的帮助。感谢。
答案 0 :(得分:2)
创建一个以IP地址为参数的构造函数。
public class TCPClient {
private String SERVERIP = "";
public TCPClient(String serverIp){
SERVERIP = serverIp;
}
}
然后在你的活动中。
TCPClient client = new TCPClient(new_IPAddress);
然而,不正确的命名惯例让我的眼睛流血;)这是固定的:
public class TcpClient {
private String serverIp = "";
public TcpClient(String serverIp){
this.serverIp = serverIp;
}
}
...
TcpClient client = new TcpClient(newIpAddress);
答案 1 :(得分:2)
您可以通过两种方式实现这一目标。
由于您尚未在MainActivity中声明 TCPClient 对象/引用。以下两种方法可以帮助您实现这一目标。它们如下:
1)。内在类
作为内部类的TCPClient甚至可以访问MainActivity私有变量。
`public class MainActivity { onCreate().... /* And other activity methods */ public class TCPClient { /* You class implementation here */} }`
2)。带有ip参数的构造函数的另一个类。
传递TCPClient
构造函数
public class TCPClient { public TCPClient(Parameters ... params ) {} /* Implementation here */}
然后从您的MainActivity TCPClient tcpClient = new TCPClient(parameters ....);
答案 2 :(得分:1)
首先,由于SERVERIP
中的TCPClient
被声明为final
,因此无法更改该值。你可以:
1)删除初始值并创建一个新的构造函数(推荐)
public static final String SERVERIP;
public TCPClient(OnMessageReceived listener, String ipAddress) {
mMessageListener = listener;
SERVERIP = ipAddress;
}
然后在MainActivity
,请致电TCPClient client = new TCPClient(yourListener, new_IPAddress);
或,2)删除final
修饰符
public static String SERVERIP = "";
然后在MainActivity
,请致电TCPClient.SERVERIP = new_IPAddress;
答案 3 :(得分:0)
在MainActivity.java中使用它
Intent myIntent = new Intent(MainActivity.this, TCPClient.class);
myIntent.putExtras("new_IPAddress", new_IPAddress);
startActivity(myIntent);
在TCPClient.java中使用它
Bundle extra = getIntent().getExtras();
if(extra != null) {
String value = extra.getString("new_IPAddress")
}
在此之后使用字符串,无论你想要什么。
快乐编码:)
答案 4 :(得分:0)
我假设您至少对Java语言有基本的了解。要获得任何有意义的答案,您需要提供有关您遇到的问题的更多详细信息。一个简单的问题“如何将数据从一个对象传递到另一个对象”过于简单和通用,无法获得任何类型的质量答案。特别是:
实现一个简单的mutator / setter或通过构造函数传递数据有什么问题?
此外:
在这种情况下,问题更多的是如何从Activity中获取对象对现有对象的引用。
在这种情况下,问题是如何管理活动中的对象引用,特别是通过Activity生命周期维护对象引用。
将来请提供尽可能详细的信息,以便我们更好地回答您的问题。