2016-09-10 4 views
2

layoutの場合はspinnerからIDを取得し、これらのIDをクラスに送信するスピナーをユーザーが選択すると、私はSpinner dropDownを牽引しています。以前の値のJavaを取得するにはどうすればよいですか?

getID.class

public class getID { 
private String tagID = "105358"; 

    public getID tagID(String tagID) { 

     this.tagID += "," + tagID; 

     return this; 
    } 
public URL build() throws MalformedURLException { 
    return new URL(
      String.format("%s", 
          tagID)); 
    } 
} 

問題:

しかし、私は二スピナーの項目を選択するとき、私は最初のスピナーの最初の値を失いました。

私はこのコードでクラスに自分の値を送信:私は最初のスピナーの項目を選択例えば

URL url = new getID(Const.URLMedia) 
           .tagID("10") 
           .build(); 

他のクラス(試験のために私は10の値を送信する)なるほど:

105358,10 

私が見る他のクラスの第スピナー(試験のI 85値を送信する)上の項目を選択:

105358,85 

BあなたがgetID毎回の新しいインスタンスを作成しているよう

105358,10,85 

答えて

3

は思え::

URL url = new getID(Const.URLMedia) 
           .tagID("10") 
           .build(); 

あなたが最初のスピナーを選択するときに第二選択するときに、あなたが105358,10を取得し、あなたのコードになる私がする必要があるユタ州getIDの新しいインスタンスを作成し、105358,5を取得すると、毎回新しいインスタンスを作成するのではなく、単一のgetIDインスタンスを作成するだけです。

class Activity ..{ 
getID url; 

     @Override 
      oncreate (Bundle saveinstance){ 
      url=new getID(); 
     } 
    } 

今、単純な値

URL url = obj.tagID(StringValue).build(); 

を追加し、プラス私はこのgetID(Const.URLMedia)ための任意のconstructorを見ることができない、欠けているように思えます。

壊れたURL( シーケンスの問題であれば)を回避するためにいくつかの予期しないケースについて

ベストプラクティス:

は、ユーザーが代わりに最初の第二スピナを選択した場合:あなたが最初のonclick内側に新しいgetIDオブジェクトを作成することができますスピナープラス第2スピナーのデフォルト値を設定します。

1

それを行うための1つの方法は、2つのスライダーを追跡することです(私は、コンストラクタを追加した):

public class getID { 
private String tagID; 
private String init; 
private String firstSlider; 
private String secondSlider; 

public getID setFirstSlider(String value) { 
    firstSlider = value; 
    return this; 
} 
public getID setSecondSlider(String value) { 
    secondSlider = value; 
    return this; 
} 

public getID(String init) { 
    this.init = init; 
    tagID = "" ; 
    firstSlider = ""; 
    secondSlider = "";  
} 

    public getID tagID() { 

     this.tagID = init + "," + firstSlider + "," + secondSlider; 

     return this; 
    } 
public URL build() throws MalformedURLException { 
    return new URL(
      String.format("%s", 
          tagID)); 
    } 
} 

次に、あなたはこのようにクラスを使用することができます:

 try { 
     getID myID = new getID("105358") ; 
     URL url = myID.setFirstSlider("10").setSecondSlider("20").tagID().build(); 
     System.out.println("url: " + url); 
    } catch (Exception e) { 
     System.out.println("Exception: " + e); 
    } 

ありますたとえば、tagID()関数とtagID Stringを削除し、すべての情報が利用可能なのでbuild()を直接呼び出すなど、他の方法で行うことができます。

public URL build() throws MalformedURLException { 
    return new URL(
      String.format("%s,%s,%s", 
          init, firstSlider, secondSlider)); 
    } 
} 
関連する問題