今天遇到一个问题:一个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/");
}
}