选择另一个微调器后更新微调器

时间:2012-11-15 22:15:52

标签: java android spinner

嘿伙计们,我刚开始制作几天前的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;
}
}

感谢帮助人员。

1 个答案:

答案 0 :(得分:1)

您的问题不在上面的代码中。您可能正在尝试在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代码,甚至是“//涉及第二个微调器的其他一些代码”,只有在此之后,侦听器才会激活并被触发。

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