0

それは典型的な質問のようですが、mapavtivityからメインアクティビティのonitemselectedクラス(スピナークラス)の変数にアクセスする際に問題に直面しているわけではありません

メインのアビティビティマップはボタンクリックで表示されます

今私はmapctivitymapactivityコードからメインアクティビティのクラスの変数を使用したい

      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て「name」値にアクセスできるようにする場合は、アクティビティの開始に使用するインテントで値を渡す必要があります。

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 に答える