EditText到String名称到不同的类

时间:2012-04-25 18:27:37

标签: java android

我在我的应用程序中遇到一些问题,要求用户输入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。

1 个答案:

答案 0 :(得分:0)

此处的问题是,此处创建的IPEntry对象:ClientUpload中的IPEntry ipentry = new IPEntry(); IPEntry对象;它不共享ipadd的相同值。默认构造函数将其设置为null

有很多方法可以解决这个问题;您可以使用String参数为ClientUpload添加构造函数,并将其保存在实例变量中,或者将另一个参数添加到uploadFile()方法以接受IP地址。

你也可以制作ipadd变量static,允许在所有IPEntry实例中访问它,虽然我不建议这样做,因为它完全没必要,多个IPEntry对象将会需要更多(不必要的)内存和开销。