它似乎是一个典型的问题,但它不是我在从主要活动中访问主要活动的onitemselected类(spinner类)的变量时面临的问题
主要活动地图中的显示在按钮单击
上现在我想从mapctivity中使用main活动类的变量 地图活动代码
String dest ;
OnItemSelectedListener place = new OnItemSelectedListener();
dest = place.onItemSelected();
现在是onitemselected类
public void onItemSelected(AdapterView<?> parent, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
name = "Destination:" + parent.getSelectedItem().toString()+ "\n";
etTextOut.setText(name);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
public String onItemSelected() {
// TODO Auto-generated method stub
//dest = name;
return name;
}
}
问题在于mapactivity,变量为null,无法获取值
告诉我我做错了什么
答案 0 :(得分:0)
我不确定我是否理解您的程序设置方式,但据我所知,您有一个主要Activity
,其中有一个微调器。
首先确保在创建后将onItemSelectedlistener
设置为微调器。
OnItemSelectedListener place = new OnItemSelectedListener();
//Replace "spinnerId" with the id you have set for your spinner in your layout
Spinner spinner = (Spinner) findViewById(R.id.spinnerId);
spinner.setOnItemSelectedListener(place);
然后,如果您要启动MapActivity
并让它可以访问“name”值,则必须传递用于启动活动的intent中的值。
String dest = place.onItemSelected();
//You might want to rename this method to something clearer like "getName" but that's just me.
Intent intent = new Intent(this, MapActivity.class);
intent.putExtra("DestValue", dest);
startActivity(intent);
现在,在您的MapActivity
中,您可以使用以下方式访问此值:
Intent intent = getIntent();
String dest = intent.getStringExtra("DestValue");
如果您的主要活动未启动MapActivity,您还可以尝试查看SharedPreferences
以在活动之间传递值。
希望这有用。
更正的答案:
在您的活动中尝试此操作。它应该工作:
private EditTextBox etTextOut;
@Override
protected void onCreate(Bundle savedInstanceBundle){
EditTextBox etTextOut = (EditTextBox) findViewById(R.id.etTextOutId);
Spinner spinner = (Spinner) findViewById(R.id.spinnerId);
OnItemSelectedListener spinnerListener = new OnItemSelectedListener{
private String name;
public void onItemSelected(AdapterView<?> parent, View view, int position, long id){
name = name = "Destination:" + parent.getSelectedItem().toString()+ "\n";
etTextOut.setText(name);
}
public void onNothingSelected(AdapterView<?> parent){}
public String getName(){
return name;
}
}
spinner.setOnItemClickListener(spinnerListener);
}