2012-11-29 30 views
1

我創建了一個彈出窗口並在其中放置了一個微調框。但是當從中選擇一個項目時,我無法獲取值。Spinner窗口內的微調框

我的代碼來創建彈出:彈出

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#A0BBBBBB"> 



<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#A0BBBBBB" > 

    <TextView 
     android:id="@+id/addpaintext" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/addpain" 
     android:textColor="#000000" 
     android:textSize="18dp" 
     android:typeface="serif" /> 

    <EditText 
     android:id="@+id/statustbox" 
     android:layout_width="fill_parent" 
     android:layout_height="150dp" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/addpaintext" 
     android:layout_marginTop="17dp" 
     android:hint="@string/addpain" 
     android:inputType="textMultiLine" 
     android:textColor="#000000" 
     android:textSize="20dp" 
     android:typeface="serif" /> 

    <Button 
     android:id="@+id/addpainbutton" 
     android:layout_width="80dp" 
     android:layout_height="45dp" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/statustbox" 
     android:layout_marginLeft="18dp" 
     android:layout_marginTop="98dp" 
     android:onClick="statusupload" 
     android:text="@string/statusupload" /> 

    <Button 
     android:id="@+id/cancelbutton" 
     android:layout_width="80dp" 
     android:layout_height="45dp" 
     android:layout_alignBaseline="@+id/addpainbutton" 
     android:layout_alignBottom="@+id/addpainbutton" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="18dp" 
     android:onClick="canceladdpain" 
     android:text="@string/cancel" /> 



    <Spinner 
     android:id="@+id/spinner_list" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/addpainbutton" 
     android:layout_alignRight="@+id/cancelbutton" 
     android:layout_below="@+id/statustbox" 
     android:layout_marginTop="20dp" 
     android:prompt="@string/testtxt" 
     android:entries="@array/list"/> 

</RelativeLayout> 

</LinearLayout> 

LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    popwindow=new PopupWindow(inflater.inflate(R.layout.addpain, null,false),300,350,true); 
    popwindow.showAtLocation(this.findViewById(R.id.tabHost), Gravity.CENTER, 0, 0); 

XML文件我StatusUpload功能:

public void statusupload(View view) 
{ 

    EditText status=(EditText) popwindow.getContentView().findViewById(R.id.statustbox); 

    Spinner spinner=(Spinner) popwindow.getContentView().findViewById(R.id.spinner_list);  

    spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position,long id) 
     { 
      category=parent.getSelectedItem().toString(); 
     } 


     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 
      category="Miscellaneous"; 
     } 
    }); 

    Toast.makeText(getBaseContext(),category, Toast.LENGTH_LONG).show(); 


} 

會發生什麼事是vraible類心不是得到任何價值! ! IT只是空白。

+0

是它來了'Miscellaneous'? – mango

+0

@mango nope nothing !!類變量只是空白空字符串 – Brooklyn

+0

你有沒有叫'公共無效statusupload(視圖視圖)'某處? – mango

回答

1

你沒有看到你想要的結果,因爲一切都取決於按鈕來打開你的微調監聽器。因此您必須單擊該按鈕,進行微調器選擇,然後再次單擊該按鈕。我會認真重新考慮設計。例如,你是否知道你不需要監聽器來選擇該項目?你可以只使用:

public void statusupload(View view) 
{ 
    EditText status=(EditText) popwindow.getContentView().findViewById(R.id.statustbox); 
    Spinner spinner=(Spinner) popwindow.getContentView().findViewById(R.id.spinner_list);  

    category = spinner.getSelectedItem().toString(); 
    Toast.makeText(getBaseContext(),category, Toast.LENGTH_LONG).show(); 
} 
+0

我不知道爲什麼我沒有想到它!謝謝 – Brooklyn

+0

芒果先生,我已經嘗試過了,但微調者的第一個位置只在吐司中顯示。我不知道它不適合我的原因是什麼。感謝知識共享。 –