从mapactivity访问main活动类的变量时出错

时间:2012-09-24 11:32:41

标签: android eclipse google-maps variables

它似乎是一个典型的问题,但它不是我在从主要活动中访问主要活动的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,无法获取值

告诉我我做错了什么

1 个答案:

答案 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);

}