今天遇到一个问题:一个Activity(A)跳转到另一个Activity(B),我的想法是从A中ListView选中的项中提取出想要的字符串,然后传递到B中,当B中接收到传递过来的信息后,对B中的一个Spinner做相应的改变。
A传数据给B很简单,在A中用Intent去putExtra就行, 然后到B中的onCreate()中用getExtras就行了,可是怎么才能让Spinner也跟着改变呢?
原来spinner有一个setSelection(),将spinner设为全局变量后用spinner.setSelection(GestureConstant.FILE_GESTURE, false);就可以了。
贴一部分代码,不完整。
A Activity
Intent fileIntent = new Intent(FileManager.this, CreateGestureActivity.class); fileIntent.putExtra("file", "file"); startActivity(fileIntent);
B Activity
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.create_gesture); spinner = (Spinner) findViewById(R.id.spinner); // 设置spinner的adapter ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.add_gesture_prompt, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); spinner.setPrompt("创建手势类型"); // 设置spinner的监听器 spinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(CreateGestureActivity.this, parent.getItemAtPosition(position).toString(), Toast.LENGTH_SHORT).show(); switch (position) { // 文件 case GestureConstant.FILE_GESTURE: textView.setText("路径:"); editText.setText("mnt/sdcard/"); button_choose.setText("添加"); current_gesture = GestureConstant.FILE_GESTURE; overlay.clear(true); button_ok.setEnabled(false); // button.setVisibility(View.VISIBLE); break; default: break; } } @Override public void onNothingSelected(AdapterView<?> parent) { } }); getIntent2SetSpinner(); } /** * 获取传递过来的Intent信息 */ private void getIntent2SetSpinner() { Intent i = getIntent(); Bundle b = i.getExtras(); if("file".equals(b.getString("file"))) { Log.i(TAG, "------------------------------------------------------>OK?"); spinner.setSelection(GestureConstant.FILE_GESTURE, false); editText.setText("mnt/"); } }