Проблемы с 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"));             
}
Другие вопросы по тегам