Проблемы с putExtra и putStringArrayList
Я пытаюсь отправить некоторые данные из одного действия в другое, и это вроде как работает, но не так, как я хочу работать. Проблема 1-вещи запутываются. В следующей части действия элемента списка происходит неправильный просмотр текста, а другой - правильный просмотр текста. Проблема 2- Я могу только перечислить 1 элемент в новом действии, но я хочу иметь возможность отправлять несколько элементов списка. Я думаю, что проблема заключается в объединении разных типов запросов putExtra в одном месте, как я делаю здесь.
.putExtra ("inputPrice", (CharSequence) pick).putStringArrayListExtra ("list", listItems)
Помощь муравья будет оценена.
Отправка данных в следующее действие
final TextView username =(TextView)findViewById(R.id.resultTextView);
String uname = username.getText().toString();
final TextView uplane =(TextView)findViewById(R.id.inputPrice);
String pick = uplane.getText().toString();
final TextView daplane =(TextView)findViewById(R.id.date);
String watch = daplane.getText().toString();
startActivity(new Intent(MenuView1Activity.this,RecordCheckActivity.class)
.putExtra("date",(CharSequence)watch)
.putExtra("Card Number",(CharSequence)uname)
.putExtra("inputPrice",(CharSequence)pick)
.putStringArrayListExtra("list", listItems)
);
finish();
Это следующая активность
Intent is = getIntent();
if (is.getCharSequenceExtra("Card Number") != null) {
final TextView setmsg = (TextView)findViewById(R.id.saleRccn);
setmsg.setText(is.getCharSequenceExtra("Card Number"));
}
Intent it = getIntent();
if (it.getCharSequenceExtra("date") != null) {
final TextView setmsg = (TextView)findViewById(R.id.saleTime);
setmsg.setText(it.getCharSequenceExtra("date"));
}
Intent id1 = getIntent();
if (id1.getCharSequenceExtra("inputPrice") != null) {
final TextView setmsg = (TextView)findViewById(R.id.saleName);
setmsg.setText(id1.getCharSequenceExtra("inputPrice"));
}
ArrayList<String> al= new ArrayList<String>();
al = getIntent().getExtras().getStringArrayList("list");
saleNotes= (TextView) findViewById(R.id.saleNotes);
saleNotes.setText(al.get(0));
2 ответа
Хорошо, несколько вещей:
Прежде всего вам не нужно бросать свои строки как CharSequence
,
Второе,
Определите намерение, добавьте свои дополнения и только потом вызывайте startActivity, как показано ниже:
Intent intent = new Intent(MenuView1Activity.this,RecordCheckActivity.class);
intent.putExtra("date", watch);
startActivity(intent);
В-третьих, при получении намерения сначала создайте комплект, как показано ниже:
Bundle extras = getIntent().getExtras();
String date = extras.getString("date");
РЕДАКТИРОВАТЬ:
Вот как вы преобразуете весь список массивов в одну строку и добавляете ее в текстовое представление.
String listString = "";
for (String s : al)
{
listString += s + "\t"; // use " " for space, "\n" for new line instead of "\t"
}
System.out.println(listString);
saleNotes.setText(listString);
Надеюсь это поможет!
Попробуйте это, не используйте CharSequence
просто введите строковое значение
startActivity(new Intent(MenuView1Activity.this,RecordCheckActivity.class)
.putExtra("date",watch)
.putExtra("Card Number",uname)
.putExtra("inputPrice",pick)
.putStringArrayListExtra("list", listItems)
);
И получить как это
Intent is = getIntent();
if (is.getCharSequenceExtra("Card Number") != null) {
final TextView setmsg = (TextView)findViewById(R.id.saleRccn);
setmsg.setText(is.getStringExtra("Card Number"));
}