【发布时间】:2016-04-17 19:27:58
【问题描述】:
我有活动 A 和活动 B 活动 A 使用 Button 打开活动 B,我向它传递了一个数组 在活动 B 中,我修改了数组,当我单击按钮时,我想再次返回或打开活动 A 并将修改后的数组传递给它
有没有办法做到这一点?
对不起我的英语
在这种情况下,我有 BeginService 类,我将数组传递给 new ConceptsActivity(bill.getService()); 中的另一个活动,ConceptsActivity 修改数组并将其再次传递给 BeginService,依此类推。我这样做是因为我需要在我的账单中添加服务。
这是 BeginService 类的代码
public class BeginService extends AppCompatActivity {
private Service service[] = new Service[5];
Bill bill = new Bill();
public BeginService(){
}
public BeginService(Service service[]){
this.service = service;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
setTitle(R.string.TitleSer);
super.onCreate(savedInstanceState);
setContentView(R.layout.add_concepts);
}
public void openConcepts(View view){
new ConceptsActivity(bill.getService());
Intent intent = new Intent(this,ConceptsActivity.class);
startActivity(intent);
}
ConceptsActivity 类
public class ConceptsActivity extends AppCompatActivity{
private int i=0;
private AutoCompleteTextView actv;
private TextView tvConcept;
private TextView tvConcept2;
private TextView warning;
private TextView tvPrice;
private TextView tvbs;
private EditText price;
private Button addConcept;
private String concept;
private double priceDo;
private List<AddConceptsListView> myConcept = new ArrayList<AddConceptsListView>();
private Service[] service; //= new Service[5];
public ConceptsActivity(){
}
public ConceptsActivity(Service service[]){
this.service = service;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
setTitle(R.string.TitleSer);
super.onCreate(savedInstanceState);
setContentView(R.layout.concepts_layout);
for(int j=0; j<service.length; j++){
service[j] = new Service();
if(service[j].getName() != null){
i++;
}
}
actv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextViewConcept);
tvConcept = (TextView) findViewById(R.id.textViewConcept);
tvConcept2 = (TextView) findViewById(R.id.textViewConcept2);
warning = (TextView) findViewById(R.id.textViewWarning);
tvPrice = (TextView) findViewById(R.id.textViewPrice);
price = (EditText) findViewById(R.id.editTextPrice);
addConcept = (Button) findViewById(R.id.buttonAddConcept);
//Autocomplete Textview
String[] services = getResources().getStringArray(R.array.services_array);
ArrayAdapter<String> adapter =
new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, services);
actv.setAdapter(adapter);
actv.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_DONE) {
//make items visible
tvConcept.setVisibility(View.VISIBLE);
tvConcept2.setVisibility(View.VISIBLE);
tvPrice.setVisibility(View.VISIBLE);
price.setVisibility(View.VISIBLE);
addConcept.setVisibility(View.VISIBLE);
concept = actv.getText()+"";
tvConcept2.setText(concept);
//To hide the keyboard
InputMethodManager imm = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
handled = true;
}
return handled;
}
});
}
public void onClickAddConcept(View view){
if(price.getText().toString().equals("")){
warning.setVisibility(View.VISIBLE);
}
else {
warning.setVisibility(View.INVISIBLE);
priceDo = Double.parseDouble(price.getText().toString());
Toast.makeText(getApplicationContext(),"Precio: " + priceDo+ "" + "\n"
+ "Concepto: " + concept,Toast.LENGTH_SHORT).show();
service[i].setName(concept);
service[i].setPrice(priceDo);
i++;
for(int j=0; j<service.length; j++){
if(service[j].getName() != null || service[j].getPrice() != null){
Toast.makeText(getApplicationContext(), "Array" + j + "nameConcept: " + service[j].getName() +
"\n" + "Array price: " + service[j].getPrice(), Toast.LENGTH_SHORT).show();
}
}
}
ArrayAdapter<Service> my = new ArrayAdapter<Service>(this, android.R.layout.simple_list_item_1, service);
setContentView(R.layout.add_concepts);
tvbs = (TextView) findViewById(R.id.textViewBeginService);
tvbs.setVisibility(View.INVISIBLE);
ListView mainListView = (ListView) findViewById(R.id.list2);
mainListView.setAdapter(my);
}
【问题讨论】:
-
查看 startActivityForResult/onActicityResult 和捆绑包
-
你考虑过使用Bundle的
-
stackoverflow.com/a/34737301/3498931 .. 你可以使用 Intent 来做到这一点 .. 我在那里举了一个简短的例子.. 看看..
-
谢谢 我想知道是否有办法传递自定义类型的数组:例如 Service [] service In a bundle?