I want to get the text from a EditText and Spinner at the same time, but when I choose a type other than All types, it changes to All types itself.
My question is why Feature Flim changes to All Types by itself after I click send Button, is not how to get selected item in spinner.
strings.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"/>
here is the function sendMessage in MainActicity.java:
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);
}
and 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);
}
I choose feature flim:

after I click send

finally it shows:

Why it change to All types by itself? How to fix it?
You are setting the adapter and data within
sendMessage. So, every time you click “Send”, theSpinneris being repopulated, and thus ends up at position 0 again.Instead, do the following:
First, place the following line in your class declaration:
Second, move these to
onCreate()(or wherever you callsetContentView()):Third and finally, leave the following in your
sendMessage()method: