2012-06-17 45 views
0

我試圖在我的視圖上使用2個spinners,並在此刻實現「OnItemSelected」方法。我設置了一個switch語句來告訴spinners的區別,但是由於某種原因它似乎沒有工作。在涉及Android Spinners的switch語句中遇到問題

這裏是我的代碼:

import android.os.Bundle; 
    import android.app.Activity; 
    import android.content.Intent; 
    import android.view.View; 
    import android.widget.AdapterView; 
    import android.widget.AdapterView.OnItemClickListener; 
    import android.widget.ArrayAdapter; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.ListView; 
    import android.widget.Spinner; 
    import android.widget.TextView; 
    import android.widget.Toast; 
    import java.util.List; 
    import java.util.ArrayList; 
    import android.widget.AdapterView.OnItemSelectedListener; 
    /** 
    * This is the activity for feature 1 in the dashboard application. 
    * It displays some text and provides a way to get back to the home activity. 
    * 
    */ 

    public class F1Activity extends DashboardActivity implements OnItemSelectedListener 
    { 

    /** 
    * onCreate 
    * 
    * Called when the activity is first created. 
    * This is where you should do all of your normal static set up: create views, bind data to lists, etc. 
    * This method also provides you with a Bundle containing the activity's previously frozen state, if there was one. 
    * 
    * Always followed by onStart(). 
    * 
    * @param savedInstanceState Bundle 
    */ 





    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView (R.layout.activity_f1); 
     setTitleFromActivityLabel (R.id.title_text); 

     //declaring variables 

     Button submitButton = (Button) findViewById(R.id.button1); 
     Button cancelButton = (Button) findViewById(R.id.button2); 

     //getting arrays from strings file 
     String[] regions = getResources().getStringArray(R.array.regions_array); 
     String[] grids = getResources().getStringArray(R.array.grids_array); 

     Spinner gridSpinner = (Spinner) findViewById(R.id.gridSpinner); 
     Spinner regionSpinner = (Spinner) findViewById(R.id.regionSpinner); 

     //creating adapters for both spinners 

     ArrayAdapter<String> dataAdapter = 
      new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, grids); 
     ArrayAdapter<String> regionAdapter = 
       new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, regions); 

     // drop down layout style with radio button type. 

     dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     regionAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     // attaching data adapters to spinners 
     gridSpinner.setAdapter(dataAdapter); 
     regionSpinner.setAdapter(regionAdapter); 
     gridSpinner.setOnItemSelectedListener(this); 
     regionSpinner.setOnItemSelectedListener(this); 

     submitButton.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View view){ 
        Intent changeAdd = new Intent(); 
        setResult(RESULT_OK, changeAdd); 

        EditText nameText = (EditText) findViewById(R.id.nameTextBox); 
        EditText passText = (EditText) findViewById(R.id.passwordTextBox); 

        if(nameText.getText().toString().length() > 0 && 
          passText.getText().toString().length() > 0) //TAKE CARE OF LISRVIEW/DROPDOWN 
        { 
         Toast.makeText(getApplicationContext(), 
          "Loading...", Toast.LENGTH_LONG).show(); 
          // make an intent to start the virtual world activity..................like in addGridActivity/screen switch! 
          finish(); 

        } 
        else 
        { 
         Toast.makeText(getApplicationContext(), "Sorry, you have to complete all the fields", 
           Toast.LENGTH_SHORT).show(); 

        } 


       } 
     }); 

     cancelButton.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View view){ 
        Intent changeAdd = new Intent(); 
        setResult(RESULT_OK, changeAdd); 
        // cancelled and went back to home screen 

        finish(); 


       } 
     }); 

    } 

    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long arg3) { 
     // to handle the selection of the gridSpinner or the regionSpinner 
     int id = parent.getId(); 

     switch(id) 
     { 
     case R.id.gridSpinner: 
      Toast.makeText(parent.getContext(), "you selected" + 
      parent.getItemAtPosition(pos).toString() + "from the grid spinner", Toast.LENGTH_LONG); 
      break; 
     case R.id.regionSpinner: 
      Toast.makeText(parent.getContext(), "you selected" + 
      parent.getItemAtPosition(pos).toString() + "from the region spinner", Toast.LENGTH_LONG); 
      break; 
     default: 
      break; 
     } 

    } 

    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 
     // TODO Auto-generated method stub 

    } 



} // end class 


<code> 
+0

你有沒有試過也許'view.getId()',而不是所有的時間? –

+0

我找不到任何錯誤。添加'Log.v'或者使用調試器來查看getId()返回的是什麼,並檢查你的'R' id是否與它對應。 – Gene

+0

感謝您的建議。我只是在開關之前嘗試過「int i = view.getId()」,它沒有什麼區別。 – Tastybrownies

回答

1

你的交換機是工作的罰款。它似乎不起作用的原因是因爲您的代碼顯示Toast缺少show()調用。

相反的:

 Toast.makeText(parent.getContext(), ..., Toast.LENGTH_LONG); 

做到這一點:

 Toast.makeText(parent.getContext(), ..., Toast.LENGTH_LONG).show(); 

我犯同樣的錯誤我自己:)

0

您需要根據視圖不是視圖適配器的ID進行切換。嘗試將int id = parent.getId();更改爲int id = view.getId();

+0

我已經嘗試過,並且因爲某些原因無法工作。儘管如此,我很感激你。截至目前我選擇我的紡紗廠時沒有任何反應..... – Tastybrownies

1

更換int id = parent.getId();int id = view.getId();

+0

我以前在哪裏見過? (笑) – cstrutton

+0

是的,這似乎沒有區別。當我這樣做時,沒有消息彈出。我確實嘗試調試並查看id的變量,但只獲得了一些像2131165197這樣的長數字。我不知道是否匹配某個東西。在我的xml文件中,實際的spinners被命名爲gridSpinner和regionSpinner。 – Tastybrownies

+0

@ user1461393該號碼是視圖的ID。這些編號在編譯時生成並駐留在R.java文件中,因此您可以在R文件中找到該編號並查看匹配的字符串ID。 –