簡體   English   中英

在另一個活動中使用字符串數組將項目添加到微調器

[英]Add item to a Spinner with string-array in another activity

我嘗試將一個項目添加到帶有數組的微調器中。 我使用 .add(array) 但問題是,我的 Spinner 在我的主要活動中。 並且添加編輯文本的按鈕在另一個活動中。

如何將 adapter.add(array) 連接到我的主要活動?

主活動.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) {

        }
    });
}

添加IP.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);

        }
    });
}
}

如果要將數據從第二個活動傳遞到第一個活動,請在第一個活動中創建一個公共方法,通過創建 first_activity.java 類的對象從第二個活動調用此方法。

例如 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);

我想你正在尋找這個http://developer.android.com/training/basics/intents/result.html

應用於您的代碼,這將是:

主活動.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;
    }
}

添加IP.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();

    }
});

哦! 而且您還需要override onActivityResult以檢索數據並更新您的視圖

@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
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM