0

私は Android を初めて使用し、情報の移動と表示を試しています。このアプリのメイン ビューにスピナーを配置することに成功しましたが、(goFilter を実行するボタンを使用して) 別のビューをクリックし、(goHome を実行するボタンを使用して) 戻ると、代わりにプレースホルダーが表示されます。goHome がスピナー クラス情報を読み込まないことと関係があると確信していますが、別の方法で行う方法がわかりません。

提案?以下の .java コード:

package com.example.hellorelative;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.AdapterView;


public class HelloRelative extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Spinner spinner = (Spinner) findViewById(R.id.spinner);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this, R.array.planets_array, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());

    }
    public class MyOnItemSelectedListener implements OnItemSelectedListener {

        public void onItemSelected(AdapterView<?> parent,
            View view, int pos, long id) {
          Toast.makeText(parent.getContext(), "The planet is " +
              parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
        }

        public void onNothingSelected(AdapterView parent) {
          // Do nothing.
        }
    }
    public void goFilter(View view) {
        setContentView(R.layout.c_filter);
    }
    public void goHome(View view) {
        setContentView(R.layout.main);
    }
}
4

1 に答える 1

0

あなたの go メソッドは、実際にはアプリをどこにでも移動させるようには見えません。アクティビティのレイアウトを変更するだけです。

2番目のレイアウトにはidを持つスピナー要素がないと思います。それがなくなった理由です。

また、別のアクティビティを開始してこのアクティビティに戻ることはないため、 onCreate() メソッドは呼び出されず、スピナーは再度セットアップされません。

あなたがしたいことは、フィルタービュー用の追加のアクティビティを作成し、ナビゲートすることです

startActivity(new Intent(this, filterActivity.class)

また

フィルターレイアウトでスピナーを提供すると、「機能する可能性があります」。表示したくない場合は、設定しないでください。

spinner.setVisibility(View.GONE);
于 2012-05-13T08:35:55.367 に答える