Search code examples
androidarraysstringonitemselectedlistener

Spinner: Open new Url "onItemSelected" and write in a "string"


I want to load a URL in the WebView if I click on an Item in my spinner. I've try to write the value from the selected item in the spinner in a string and reload the URL in the WebView with the new Website that I have selected with the spinner. But it doesn't load the new URL, I hope you guys can help me :)

array.xml:

<string-array name="server_array">
    <item value="http://www.msn.com">Server 1</item>
    <item value="http://www.stackoverflow.com">Server 2</item>
</string-array>

Strings:

String starturl = "http://www.google.de", selected;
WebView myWebView;

onCreate:

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    //WebView
    myWebView = (WebView) findViewById(R.id.webView);
    myWebView.setWebViewClient(new WebC());
    WebSettings webSettings = myWebView.getSettings();

    //JavaScript erlauben
    webSettings.setJavaScriptEnabled(true);

    //Start Url
    myWebView.loadUrl(starturl);

Spinner:

//Spinner
        Spinner spinner = (Spinner) findViewById(R.id.server_spinner);
        ArrayAdapter<CharSequence>
                adapter = ArrayAdapter.createFromResource(this,
                R.array.server_array, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
    }

onItemSelected:

public class SpinnerActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

            public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

                selected = parent.getItemAtPosition(pos).toString();

                myWebView.loadUrl(selected);
            }

            public void onNothingSelected(AdapterView<?> parent) {

                myWebView.loadUrl(starturl);
            }
        }

Solution

  • you are not calling setOnItemSelectedListener anywhere. Assuming that Spinner and WebView are in the same SpinnerActivity, you have to call

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

    Where this refers to SpinnerActivity, which implements AdapterView.OnItemSelectedListener {