DaxHR
DaxHR

Reputation: 683

Displaying Spinner selected item in another class TextView

So I have a Spinner and I wan't user to select one item from it and then display his selection in another activity.. but Button won't even do anything.. I'm guessing error is in intent.putExtra of int position == 0.. can somebody help me out?

cilj = (Spinner) findViewById(R.id.spinnerPrehranaCilj);
            prikaziRezultat = (Button) findViewById(R.id.buttonPrehranaPrikaziRezultate);


            ArrayAdapter<CharSequence> ciljPrehranaSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.spinner_cilj_prehrana, android.R.layout.simple_spinner_item);
            ciljPrehranaSpinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            cilj.setAdapter(ciljPrehranaSpinnerAdapter);

            prikaziRezultat.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    cilj.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                        @Override
                        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                            if (position == 0){
                                Intent intent = new Intent(getApplicationContext(), AppLayoutMain.class);
                                intent.putExtra("ciljJePovecanjeTezine", cilj.getItemIdAtPosition(0));
                                startActivity(intent);
                            } else if (position == 1){
                                Toast.makeText(PrehranaInputMain.this, "drugo bi trebalo bit odabrano", Toast.LENGTH_SHORT).show();
                            }

                        }

                        @Override
                        public void onNothingSelected(AdapterView<?> parent) {

                        }
                    });

                }
            });

This is the second activity

 String prehrana = intent.getStringExtra("ciljJePovecanjeTezine");

        ciljPrehranaRezultat = (TextView) findViewById(R.id.textViewPrehranaCiljRezultat);
        ciljPrehranaRezultat.setText(prehrana);

Thank you!!

Here's the modified code of first activity:

 cilj = (Spinner) findViewById(R.id.spinnerPrehranaCilj);
        prikaziRezultat = (Button) findViewById(R.id.buttonPrehranaPrikaziRezultate);


        ArrayAdapter<CharSequence> ciljPrehranaSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.spinner_cilj_prehrana, android.R.layout.simple_spinner_item);
        ciljPrehranaSpinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        cilj.setAdapter(ciljPrehranaSpinnerAdapter);


                cilj.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                        if (position == 0){
                            Toast.makeText(PrehranaInputMain.this, R.string.cilj_prehrana_nista_odabrano, Toast.LENGTH_SHORT).show();
                        } else if (position == 1){
                            Intent intent = new Intent(getApplicationContext(), AppLayoutMain.class);
                            intent.putExtra("ciljJePovecanjeTezine", cilj.getSelectedItem().toString());
                            startActivity(intent);
                        } else if (position == 2){
                            Intent intent = new Intent(getApplicationContext(), AppLayoutMain.class);
                            intent.putExtra("ciljJeMrsavljenje", cilj.getSelectedItem().toString());
                            startActivity(intent);
                        }
                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {

                    }
                });
        prikaziRezultat.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        });

and second activity

      String prehrana = intent.getStringExtra("ciljJePovecanjeTezine");
            String prehrana2 = intent.getStringExtra("ciljJeMrsavljenje");

            ciljPrehranaRezultat = (TextView) findViewById(R.id.textViewPrehranaCiljRezultat);
            ciljPrehranaRezultat.setText(prehrana);

// SEEMS LIKE SOME IF STATEMENT NEEDED HERE?
            //ciljPrehranaRezultat.setText(prehrana2);

Upvotes: 0

Views: 691

Answers (2)

Kevin Crain
Kevin Crain

Reputation: 1935

Change the following lines:

if (position == 0){
      Intent intent = new Intent(getApplicationContext(), AppLayoutMain.class);
      intent.putExtra("ciljJePovecanjeTezine", (CharSequence)cilj.getItemIdAtPosition(0));
      startActivity(intent);
} else if (position == 1){
      Toast.makeText(PrehranaInputMain.this, "drugo bi trebalo bit odabrano", Toast.LENGTH_SHORT).show();
}

To:

Intent intent = new Intent(getApplicationContext(), AppLayoutMain.class);
intent.putExtra("ciljJePovecanjeTezine", cilj.getItemAtPosition(position));
startActivity(intent);

Upvotes: 0

Sean
Sean

Reputation: 11

your listener to the drop down is not set until the user clicks the button, which means until you click the button at least once, selecting an item from the drop down doesn't do anything.

have you tried to select an item from the spinner after you click the button?

if you want to go to the other activity when the user clicks the button, keep only the startActivity(intent) in the onClick() method and move the onItemSelected() method up a level, move the intent as a global variable.

cilj = (Spinner) findViewById(R.id.spinnerPrehranaCilj);
prikaziRezultat = (Button)      findViewById(R.id.buttonPrehranaPrikaziRezultate);
Intent intent = new Intent(getApplicationContext(), AppLayoutMain.class);

ArrayAdapter<CharSequence> ciljPrehranaSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.spinner_cilj_prehrana, android.R.layout.simple_spinner_item);
ciljPrehranaSpinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
cilj.setAdapter(ciljPrehranaSpinnerAdapter);

                cilj.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                        if (position == 0){
                            intent.putExtra("ciljJePovecanjeTezine", cilj.getItemIdAtPosition(0));
                        } else if (position == 1){
                            Toast.makeText(PrehranaInputMain.this, "drugo bi trebalo bit odabrano", Toast.LENGTH_SHORT).show();
                        }

                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {

                    }
                });

        prikaziRezultat.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                            startActivity(intent);
            }
        });

also, even in that case, it appears to me that you are only jumping to the activity when the user selects item at position "0". can we assume this is not a blank space and your spinner only has 2 entries in it?

Upvotes: 1

Related Questions