[英]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.