私のアプリのこの部分は、クリックされたアイテムの名前とその価格を別のアクティビティに送信することを想定しています。
問題は、アイテム文字列が正しく、価格文字列が null であるときに、インテント文字列エクストラが最初に送信される場合です。2 回目は、アイテムの文字列が正しく、価格には現在の文字列ではなく前の文字列が表示されます。
ここに私のコードがあります: Sending Activity
@Override
public void onItemClick(final AdapterView<?> parent,
final View view, final int position, final long id) {
(new GetPriceTask()).execute((Object) ((TextView) view)
.getText());
final String selectedFromList =(String) (lv.getItemAtPosition(position));
Intent data = new Intent(mainActivity, TabActivity.class);
Bundle extras = new Bundle();
extras.putString("price",result);
extras.putString("item",selectedFromList);
data.putExtras(extras);
startActivity(data);
}
});
受信アクティビティ:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_layout);
Button b = (Button) findViewById(R.id.pay_button);
b.setOnClickListener(this);
TableLayout table = (TableLayout) findViewById(R.id.the_table);
final TableRow row = new TableRow(this);
Bundle extras = getIntent().getExtras();
String item = extras.getString("item");
String price = extras.getString("price");
if(price == null){
price = "null";
}
TextView tv = new TextView(this);
TextView tv2 = new TextView(this);
row.setClickable(true);
tv.setText(item);
tv.setGravity(Gravity.LEFT);
tv.setFreezesText(true);
row.addView(tv);
tv2.setText(price);
tv2.setGravity(Gravity.LEFT);
tv2.setFreezesText(true);
row.addView(tv2);
また、トースト メッセージに現在の価格を表示するように設定しているため、最初の送信では null であってはなりませんが、何らかの理由でそうなります。また、両方の文字列が null かどうかをテストしたところ、インテントの最初の送信時に null だったのは価格文字列であることがわかりました。何か案は?