2016-01-13 100 views
0

我有活动A和活动B 活动A用Button打开活动B并将其传递给数组 在活动BI中修改数组,并在何时我点击一个按钮我想要返回或再次打开活动A并将其传递给修改过的阵列Android:返回上一个活动并将其传递给数组

有没有办法做到这一点?

对不起,我的英语

在这种情况下,我有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); 

} 
+1

看看startActivityForResult/onActicityResult和捆绑 – zgc7009

+0

你有没有考虑过使用Bundle的 –

+0

什么是捆绑包? – Alxlly

回答

1

使用setResult在目标活动:

Intent resultIntent = new Intent(); 
resultIntent .putExtra("arrayName", your_array_name); 
setResult(Activity.RESULT_OK, resultIntent); 
finish(); 

在你的第一个活动,增加

​​
+0

问题是我不能使用ArrayList,我需要一个对象类型的数组 – Alxlly

相关问题