我在我的应用程序中遇到一些问题,要求用户输入IP地址,并将该IP条目用于连接到其他设备。在这两个类中,IPEntry类被设置为通过EditText读取IP并将其转换为字符串。然后我希望它在我的ClientUpload类中传递和使用。显然我试图解决这个问题无济于事。当我以下列方式使用它时,它说它无法找到IP,因此它不会传输。我也尝试进入一个方法并调用它,但这也没有用。反正有吗?
由于
IPEntry Class
public class IPEntry extends Activity {
Button Submit;
EditText IP;
TextView Thistext;
public String ipadd;
public Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.ipentry);
Submit = (Button) findViewById(R.id.bIPSubmit);
Thistext = (TextView) findViewById(R.id.tvTextIP);
IP = (EditText) findViewById(R.id.edIPBar);
Submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ipadd = IP.getText().toString();
Intent Trans = new Intent("wishift.mat.ANDROIDEXPLORER");
startActivity(Trans);
}
}
);
}}
客户上传类的相关部分
public class ClientUpload extends Thread{
IPEntry ipentry = new IPEntry();
public int UploadFile(File file) throws UnknownHostException, IOException
{
//loop
int serverPort = 6880;
// String ip = "192.168.1.73";
String ip = ipentry.ipadd;
Socket socket = new Socket(ip, serverPort);
正如你所看到的,我注释掉了可行的部分,但我非常不想在代码中手动添加IP。
答案 0 :(得分:0)
此处的问题是,此处创建的IPEntry
对象:ClientUpload中的IPEntry ipentry = new IPEntry();
是 新 IPEntry
对象;它不共享ipadd
的相同值。默认构造函数将其设置为null
。
有很多方法可以解决这个问题;您可以使用String
参数为ClientUpload添加构造函数,并将其保存在实例变量中,或者将另一个参数添加到uploadFile()方法以接受IP地址。
你也可以制作ipadd
变量static
,允许在所有IPEntry实例中访问它,虽然我不建议这样做,因为它完全没必要,多个IPEntry
对象将会需要更多(不必要的)内存和开销。