0

这似乎是一个典型的问题,但它不是我在从 mapavtivity 访问主要活动的 onitemselected 类(微调器类)的变量时遇到的问题

在主活动地图中显示在按钮单击上

现在我想使用mapctivity mapactivity代码中的主要活动类的变量

      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,它无法获取值

告诉我我做错了什么

4

1 回答 1

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并让它可以访问“名称”值,则必须在用于启动活动的意图中传递该值。

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

}
于 2012-09-24T13:28:00.030 回答