2012-11-15 97 views
1

嘿家伙我几天前刚刚开始android应用程序,即时尝试更新一个微调信息与另一个微调。在你开始讨厌之前,我已经检查了其他答案,并尝试了所有答案,但由于某种原因,没有任何工作!它应该从一个xml字符串文件中获取一个数组,并填充该微调,我不知道是否在我的代码中犯了一个错误,但它似乎并不工作。继承人的代码部分,不工作:选择另一个微调器后更新微调器

public class NextBusesActivity extends Activity { 

private Spinner spinnerRoutes; 
private Spinner spinnerStops; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_next_buses); 

    spinnerStops = (Spinner)findViewById(R.id.nextBusStopsSpinner); 
    spinnerRoutes = (Spinner)findViewById(R.id.nextBusRoutesSpinner); 


    spinnerRoutes.setOnItemSelectedListener(spinnerBusRouteHandler); 
} 


private OnItemSelectedListener spinnerBusRouteHandler= new OnItemSelectedListener(){ 

    public void onItemSelected(AdapterView<?> parent, View view, int pos, 
      long id) { 
     Log.d(MainActivity.DEBUGTAG, "Made it into the listener"); 

     //if (parent.getItemAtPosition(pos).toString().contains("Trent")){ 

      Log.d(MainActivity.DEBUGTAG, "Made it to Trent west bank  choice"); 
      ArrayAdapter<CharSequence> adapter =  ArrayAdapter.createFromResource(getApplicationContext(), 
        R.array.westbank_stops,  android.R.layout.simple_spinner_item); 
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

      spinnerStops.setAdapter(adapter); 

      Log.d(MainActivity.DEBUGTAG, "Spinner refill worked  westbank"); 
     //} 

    } 

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

    } 

}; 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_next_buses, menu); 
    return true; 
} 
} 

感谢您的帮助球员。

+2

请定义“只是似乎没有工作”。 – kosa

+0

垃圾我刚刚意识到我发布了错误的活动,所以它没有任何意义,有无论如何编辑问题或删除它? –

+1

你应该能够编辑你的问题,你没有看到任何编辑链接? – kosa

回答

0

您的问题不在于上述代码。您可能试图在onCreate中手动设置第一个微调器的选择,并期望ItemSelectListener能够完成它的工作。那么它不会。监听器仅在完全执行完onCreate代码后才变为活动状态。

所以,如果你这样做:

@Override 
public void onCreate(Bundle savedInstanceState) { 
... 
spinnerRoutes.setOnItemSelectedListener(spinnerBusRouteHandler); 
spinnerRoutes.setSelected(someSpinnerPosition, true); 

// some other code that involves the second spinner 

} 

不要指望听众当你做的setSelected准确地解雇,因为它不会。它会执行所有的onCreate代码,甚至是“//涉及第二个微调器的其他代码”,只有在这之后,监听器才会激活并被触发。

我自己遇到了这个问题,我不得不寻找解决方法。非常讨厌。

相关问题