2012-04-25 65 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對象將需要更多的(不必要的)內存和開銷。

相關問題