2012-04-25 67 views
0

遇到一些问题,因为我希望在我的应用程序中为用户输入IP地址并使用该IP条目来连接到其他设备。在这两个类中,IPEntry类设置为通过EditText读取IP并将其转换为字符串。然后我希望它在我的ClientUpload类中传递和使用。很明显,我曾尝试解决这个问题无济于事。当我用下面的方式使用它时,它说它找不到IP,因​​此它不能传输。我也试图在一种方法中进行调用,然后调用它,但那也不起作用。无论如何要做到这一点?EditText将字符串名称设置为不同的类

感谢

IPEntry类

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

_请发布任何logcat错误._您是否确实在您的Intent捆绑中传递了'ipadd'? – Sam 2012-04-25 18:32:33

+0

尝试打印ip.i的值认为你得到空值。 – 2012-04-25 19:17:22

+0

我得到一个空值。不,我没有进入一个意图捆绑。问题是ClientUpload类没有使用Android中的任何东西,它几乎只是Android项目中的一个Java类。所以显然我不能在这个类中使用任何Android特定的方法。 – 2012-04-25 19:35:26

回答

0

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

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

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

相关问题