2012-04-25 13 views
0

ユーザがIPアドレスを入力し、そのIPエントリを他のデバイスに接続するために私のアプリケーション上で問題があるので少し問題があります。これらの2つのクラスでは、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

+0

ip.iの値を表示しようとするとnullになっていると思います。 –

+0

私はヌル値を取得しています。いいえ、私はインテントバンドルに入っていません。問題は、ClientUploadクラスがAndroidから何も使用していないことです。これはAndroidプロジェクト内のほとんどのJavaクラスにすぎません。だから、明らかに私はこのクラス内でAndroid固有のメソッドを使用することはできません。 –

答えて

0

ここでの問題はIPEntryオブジェクトがここで作成したということです:ClientUploadでIPEntry ipentry = new IPEntry();新しいIPEntryオブジェクトです。 ipaddの同じ値を共有しません。デフォルトのコンストラクタでは、nullに設定されます。

これを解決する方法はたくさんあります。 IPアドレスの場合はString引数を持つClientUploadにコンストラクタを追加してインスタンス変数に保存するか、別の引数をuploadFile()メソッドに追加してIPアドレスを受け入れることができます。

バリアブルstaticをすべてのIPEntryインスタンス間でアクセスできるようにすることもできますが、これは完全に不要であり、複数のIPEntryオブジェクトにはより多くの(不要な)メモリとオーバーヘッドが必要です。