私は、データを渡してMainActivityに送信する複数のアクティビティを持つAndroidアプリを作成します。私はデータを渡すインテントを作成し、それを使ってsaveInstanceStateを使用して保存する必要があります。 InformationAを渡すと正常に動作しますが、データInfomationBに別のインテントInfoAを保存して送信すると、その情報は消去されます。 私は共有の設定を使ってみました。アクティビティを介してデータを送信して保存する方法。
どのように私はそれを修正することができますし、なぜ情報Aの消去ですか?
public class MainActivity extends AppCompatActivity {
String order = "Order \n";
String Order1;
String Order2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView warzywa = (TextView) findViewById(R.id.warzywa);
warzywa.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick (View View){
Intent idź_w = new Intent(MainActivity.this, vegetables_activity.class);
startActivity(idź_w);
}
});
TextView owoced = (TextView) findViewById(owoce);
owoced.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick (View View){
Intent idź_w = new Intent(MainActivity.this, Owoce.class);
startActivity(idź_w);
}
});
Button wysyłka = (Button) findViewById(R.id.zamówienie_całkowite);
wysyłka.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick (View View){
if (Order1==null && getIntent().getExtras().getString("WhatO")!=null)
Order1 = getIntent().getExtras().getString("WhatO");
if (Order2==null && getIntent().getExtras().getString("WhatV")!=null)
Order2 = getIntent().getExtras().getString("WhatV");
order = order + Order1 + Order2;
Toast.makeText(MainActivity.this, "" + order , Toast.LENGTH_SHORT).show();
}
});
}
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putString("Order1", Order1);
savedInstanceState.putString("Order2", Order2);
super.onSaveInstanceState(savedInstanceState);
}
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Order1 = savedInstanceState.getString("Order1");
Order2 = savedInstanceState.getString("Order2");
}}
1子アクティビティ
public class vegetables_activity extends AppCompatActivity {
String Order = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_warzywa);
final ArrayList<Produkt> vegetables = new ArrayList<>();
vegetables.add(new Produkt("tomatoe", 0));
vegetables.add(new Produkt("onion", 0));
vegetables.add(new Produkt("potatoe", 0));
New_Adapter adapter = new New_Adapter(this, vegetables);
ListView listView = (ListView) findViewById(R.id.activity_vegetables);
listView.setAdapter(adapter);
Button order = (Button) findViewById(R.id.zamówienie_warzywne);
order.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View View) {
for (int z = 0; z < vegetables.size(); z++) {
if (vegetables.get(z).getMquantity() != 0) {
Order = "" + Order + vegetables.get(z).getmNazwa_Warzywa() + " razy " + vegetables.get(z).getMquantity() + "\n";
}
}
Context context = getApplicationContext();
Toast.makeText(context, "OK", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(vegetables_activity.this, MainActivity.class);
intent.putExtra("WhatV", Order);
startActivity(intent);
}
});
}}
2子アクティビティ
public class Owoce extends AppCompatActivity {
String Order_Owoce = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_warzywa);
final ArrayList<Produkt> vegetables = new ArrayList<>();
vegetables.add(new Produkt("apple", 0));
vegetables.add(new Produkt("banana", 0));
vegetables.add(new Produkt("peach", 0));
New_Adapter adapter = new New_Adapter(this, vegetables);
ListView listView = (ListView) findViewById(R.id.activity_vegetables);
listView.setAdapter(adapter);
Button order = (Button) findViewById(R.id.zamówienie_warzywne);
order.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View View) {
for (int z = 0; z < vegetables.size(); z++) {
if (vegetables.get(z).getMquantity() != 0) {
Order_Owoce = "" + Order_Owoce + vegetables.get(z).getmNazwa_Warzywa() + " razy " + vegetables.get(z).getMquantity() + "\n";
}
}
Context context = getApplicationContext();
Toast.makeText(context, "OK", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(Owoce.this, MainActivity.class);
intent.putExtra("WhatO", Order_Owoce);
startActivity(intent);
}
});
}
}
関連するコードを表示してください。 –
データを '' Bundle''と同じキーで保存していますか?これにより元のデータが上書きされます。さらなる洞察のためにポストコードを行います。 – AshMenhennett
関連するコードを追加 – Maciek