2014-07-02 74 views
0

我想將選定的值從3個微調器保存到帶有getter/setter的變量中。但是當我試圖顯示值時,它什麼都沒有返回。無法從微調器獲取值getter

這裏設置方法

spinner_value(spinner, spinner1_selected); 
    setLang(getSpinner(spinner1_selected)); 

    spinner_value(spinner2, spinner2_selected); 
    setCountry(getSpinner(spinner2_selected)); 

    spinner_value(spinner3, spinner3_selected); 
    setCity(getSpinner(spinner3_selected)); 

試圖表現出任何價值

new AlertDialog.Builder(this) 
    .setTitle(getLang()) 
    .setMessage(getCountry()) 
    .show(); 

我的微調器,以量變換

public void spinner_value(Spinner spinner, final String spinner_value) 
{ 
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
      Object item = parent.getItemAtPosition(pos); 
      setSpinner(item.toString(), spinner_value); 
     } 

     public void onNothingSelected(AdapterView<?> parent) { 
     } 
    }); 

} 

我的getter \二傳手

public void setSpinner(String input, String spinner) { 
    spinner = input; 
} 
public String getSpinner(String spinner) { 
    return spinner; 
} 
+0

你吸氣是SIMPL y返回他們輸入的字符串。如果我使用getSpinner(「foo」),你的getter將返回「Foo」給我。 –

回答

0

通常你得到的值(在你的情況下,你想有一個String)是這樣的:

 String text = spinner.getSelectedItem().toString(); 

但我真的鴕鳥政策知道你想幹什麼。你的get/set方法只是返回或改變你給出的String值。 SetSpinner只設置兩個給定值相等。 getSpinner只是返回你給的相同的字符串,這對我沒有意義。

0

試試這種方式,希望這會幫助你解決你的問題。

main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:gravity="center" 
    android:padding="5dp"> 

    <Spinner 
     android:id="@+id/spnLanguage" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:entries="@array/language" 
     android:layout_marginTop="20dp"/> 

    <Spinner 
     android:id="@+id/spnCountry" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:entries="@array/country" 
     android:layout_marginTop="20dp"/> 


    <Spinner 
     android:id="@+id/spnCity" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:entries="@array/city" 
     android:layout_marginTop="20dp"/> 

    <Button 
     android:id="@+id/btnValue" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="20dp" 
     android:text="Value"/> 
</LinearLayout> 

string.xml

<string-array name="language"> 
    <item>"Language 1"</item> 
    <item>"Language 2"</item> 
    <item>"Language 3"</item> 
    <item>"Language 4"</item> 
    <item>"Language 5"</item> 
</string-array> 

<string-array name="country"> 
    <item>"Country 1"</item> 
    <item>"Country 2"</item> 
    <item>"Country 3"</item> 
    <item>"Country 4"</item> 
    <item>"Country 5"</item> 
</string-array> 

<string-array name="city"> 
    <item>"City 1"</item> 
    <item>"City 2"</item> 
    <item>"City 3"</item> 
    <item>"City 4"</item> 
    <item>"City 5"</item> 
</string-array> 

MyActivity.java

public class MyActivity extends Activity { 

    private Spinner spnLanguage; 
    private Spinner spnCountry; 
    private Spinner spnCity; 
    private Button btnValue; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     btnValue = (Button) findViewById(R.id.btnValue); 
     spnLanguage = (Spinner) findViewById(R.id.spnLanguage); 
     spnCountry = (Spinner) findViewById(R.id.spnCountry); 
     spnCity = (Spinner) findViewById(R.id.spnCity); 


     btnValue.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       new AlertDialog.Builder(MyActivity.this) 
         .setTitle(spnLanguage.getSelectedItem().toString()) 
         .setMessage(spnCountry.getSelectedItem().toString() +" "+spnCity.getSelectedItem().toString()) 
         .show(); 
      } 
     }); 
    } 
}