1

I try to add an item to a spinner with arrays. I use .add(array) but the problem is, my Spinner is in my main activity. and the button to add the edited text is in an other activity.

How can I connect the adapter.add(array) to my main activity?

MainActivity.java

public class MainActivity extends AppCompatActivity {    
String selected;
Spinner spinner;
WebView myWebView;
List<CharSequence> server;
ArrayAdapter<CharSequence> adapter;

//Menu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {
        case R.id.add_server:
            Intent intent = new Intent(this, AddIP.class);
            this.startActivity(intent);
            return true;
        case R.id.menu_refresh:
            myWebView.reload();
            return true;
        default:
            return true;
    }
}


@Override
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);

    //Spinner
    spinner = (Spinner) findViewById(R.id.server_spinner);

    server = new ArrayList<CharSequence>();
    adapter = new ArrayAdapter<CharSequence>(this,
            R.array.server_array_name, android.R.layout.simple_spinner_item, server);

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(new 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) {

        }
    });
}

AddIP.java

public class AddIP extends AppCompatActivity {

Button btn_back, btn_add;
EditText server_ip, server_name;
String add_server_ip, add_server_name;

@Override
protected void onCreate(Bundle savedInstanceState) {

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

    server_ip = (EditText)this.findViewById(R.id.edit_server_address);
    server_name= (EditText)this.findViewById(R.id.edit_server_name);

    //Back Button
    btn_back=(Button)findViewById(R.id.btn_back);
    btn_back.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            Intent intent = new Intent(getApplicationContext(), MainActivity.class);
            startActivity(intent);
        }
    });

    //Add IP Button
    btn_add=(Button)findViewById(R.id.btn_add);
    btn_add.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            add_server_ip = server_ip.getText().toString();
            add_server_name= server_name.getText().toString();

            MainActivity.adapter.add(add_server_ip);
            MainActivity.adapter.add(add_server_name);

        }
    });
}
}
Abhinav singh
  • 1,448
  • 1
  • 14
  • 31
Sorrow91
  • 69
  • 1
  • 1
  • 13

2 Answers2

0

If you want to pass data from second activity to first activity, create a public method in your first activity, call this method from your second activity by creating an object of the first_activity.java class.

e.g. First_Activity.java

public void dataAddAdapter(String text){
   adapter.add(text);
   adapter.notifydatasetchanged();
}

Second_Activity.java

First_Activity first_activity = new First_Activity();
first_activity.dataAddAdapter(Your_string_data);
Ajay
  • 4,773
  • 3
  • 23
  • 36
  • @Sorrow91 if my answer helps you in solving your problem, please mark it as accepted answer. You can do it by clicking the tick sign and making it green. – Ajay Nov 13 '15 at 12:13
  • what is with `Intent` can I use this? – Sorrow91 Nov 13 '15 at 14:00
  • @Sorrow91 you have to create object of first activity and using method you can pass data to the first activity. Refer http://stackoverflow.com/questions/14292398/how-to-pass-data-from-2nd-activity-to-1st-activity-when-pressed-back-android for doing with intent – Ajay Nov 14 '15 at 05:27
-1

I think you are looking for this http://developer.android.com/training/basics/intents/result.html

Applied to your code this will be:

MainActivity.java

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {
        case R.id.add_server:
            Intent intent = new Intent(this, AddIP.class);
            this.startActivityForResult(intent, 1); //Better store 1 on a constant
            return true;
        case R.id.menu_refresh:
            myWebView.reload();
            return true;
        default:
            return true;
    }
}

AddIP.java

//Add IP Button
btn_add=(Button)findViewById(R.id.btn_add);
btn_add.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View view) {
        add_server_ip = server_ip.getText().toString();
        add_server_name= server_name.getText().toString();

        Intent returnIntent = new Intent();
        returnIntent.putExtra("server_ip", add_server_ip);
        returnIntent.putExtra("server_name", add_server_name);
        setResult(Activity.RESULT_OK,returnIntent);
        finish();

    }
});

Oh! And you also need to override onActivityResult to retrieve the data and update your view

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 1) {
        if(resultCode == Activity.RESULT_OK){
            String server_ip=data.getStringExtra("server_ip");
            String server_name=data.getStringExtra("server_name");
            //Update your view here
        }
        if (resultCode == Activity.RESULT_CANCELED) {
            //Write your code if there's no result
        }
    }
}
lordscales91
  • 423
  • 1
  • 8
  • 22