1

EditText と Spinner から同時にテキストを取得したいのですが、すべてのタイプ以外のタイプを選択すると、すべてのタイプ自体に変更されます。

私の質問は、送信ボタンをクリックした後に Feature Flim がすべてのタイプに自動的に変更される理由です。スピナーで選択したアイテムを取得する方法ではありません。

文字列.xml:

<string-array name="country_arrays">
<item>All Types</item>
<item>Feature Flim</item>
<item>TV Series</item>
<item>Video Games</item>
</string-array>

activity_main.xml:

<Spinner
    android:id="@+id/spinner1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:entries="@array/country_arrays"
     />

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/button_send" 
    android:onClick="sendMessage"/>

MainActivity.java の関数 sendMessage は次のとおりです。

public void sendMessage(View view) {

    final Spinner spinner = (Spinner) findViewById(R.id.spinner1);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
            R.array.country_arrays, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);

    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            Toast.makeText(getBaseContext(), 
                "You have selected the book: " + String.valueOf(spinner.getSelectedItem()), 
                Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
        }
    });

    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString() + String.valueOf(spinner.getSelectedItem());
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}

および DisplayMessageActivity.java:

public class DisplayMessageActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Get the message from the intent
    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

    // Create the text view
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);

    // Set the text view as the activity layout
    setContentView(textView);


}

機能 flim を選択します。

私はfeature flimを選びます

送信をクリックした後

送信をクリックした後

最後に次のように表示されます。

ここに画像の説明を入力

なぜそれ自体がすべてのタイプに変わるのですか? 修正方法は?

4

3 に答える 3

2

内でアダプターとデータを設定していますsendMessage。そのため、[送信] をクリックするたびにSpinnerが再入力され、再び位置 0 になります。

代わりに、次の操作を行います。

まず、クラス宣言に次の行を追加します。

private Spinner spinner = null;

次に、これらを次のonCreate()場所 (または呼び出した場所setContentView())に移動します。

spinner = (Spinner) findViewById(R.id.spinner1); // Do not re-declare
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.country_arrays, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        Toast.makeText(getBaseContext(), 
            "You have selected the book: " + String.valueOf(spinner.getSelectedItem()), 
            Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
    }
});

sendMessage()3 番目と最後に、メソッドに以下を残します。

Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString() + String.valueOf(spinner.getSelectedItem());
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
于 2012-12-06T00:30:30.150 に答える
0

別の方法でテキストを取得してみてください。

spinner.geItemAtPosition(arg2).toString();
于 2012-12-06T00:16:41.537 に答える
0

Spinner の選択した項目を取得するには、次のようにします。

Spinner mySpinner=(Spinner)findViewById(R.id.Spinner_Id);
mySpinner.getSelectedItem().toString();
于 2012-12-06T00:18:35.790 に答える