Переход на другую активность

249
28 января 2018, 02:34

Есть код, который передает отмеченные позиции в listView в другую активность:

    public class MainActivity extends AppCompatActivity {
    String[] names = { "voron", "milk", "food", "shit", "gg"};
    TextView selection;
    ListView textList;
    Button btn;
    String[] arr;
    String test;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // получаем элемент TextView
        selection = (TextView) findViewById(R.id.selection);
        // получаем элемент ListView
        textList = (ListView) findViewById(R.id.listView);
        //Получаем эелемент Button
        btn = (Button) findViewById(R.id.button);
        // создаем адаптер
        ArrayAdapter<String> adapter = new ArrayAdapter(this,
                android.R.layout.simple_list_item_multiple_choice, names);
        // устанавливаем для списка адаптер
        textList.setAdapter(adapter);
        // добвляем для списка слушатель
        textList.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, View v, int position, long id)
            {
                selection.setText("");
                SparseBooleanArray sp=textList.getCheckedItemPositions();
                String selectedItems="";
                for(int i=0;i < names.length;i++)
                {
                    if(sp.get(i))
                        selectedItems+=names[i]+",";
                }
                // установка текста элемента TextView
                selection.setText("Выбрано: " + selectedItems);
                // выбранные позиции будут заноситься в checked:
//                int cntChoice = textList.getCount();
//                String checked = "";
                  String delt= ",";
    //                SparseBooleanArray sparseBooleanArray = textList.getCheckedItemPositions();
    //                for(int i = 0;i< cntChoice;i++){
    //                    if(sparseBooleanArray.get(i)==true){
    //                        checked+= textList.getItemAtPosition(i).toString()+" ";
    //                   }
    //  
              }
                // Получение массива для поиска
                arr = selectedItems.split(delt);
                test = selectedItems;
            }
        });
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(MainActivity.this, Main2Activity.class);
                Search search = new Search(arr);
                String start = search.print();
                i.putExtra("start",test.toString());
                startActivity(i);
            }
        });
    }
}

При передаче test = "milk, food" (Или др. отмеченные позиции) в интенте, приложение вылетает. Почему при переходе на др активность приложение вылетает?

UPD

Я немного изменил передачу интента: i.putExtra("start",arr.toString()); - почему массив приобретает такое значение: String[2]@4598

p.s. Я понимаю, что код очень сильно захламлен ненужными переменными и закомментированным кодом, я понимаю, что это снижает его читабельность, извините.

Answer 1

У массива метод toString возвращает его "дамп", тоесть тип, размер и хешкод. Чтобы передать коллекцию строк используйте putStringArrayExtra.

READ ALSO
из UTF-8 в windows-1251

из UTF-8 в windows-1251

Буду кратокОдна из проблем в моем сокет приложении на ява решилось тем что я кодировку исходного файла поменял с UTF-8 на windows-1251

263
как передать Arraylist с помощью MimeMessage

как передать Arraylist с помощью MimeMessage

Необходимо передать на почту с помощью MimeMessage Arraylist, в котором находятся экземпляры класса, чтобы в письме выводились данные Arraylist в строку...

198
Как создать нейронную сеть с помощью библиотеки fann?

Как создать нейронную сеть с помощью библиотеки fann?

В интернете искал инфу по поводу этой библы, для java документации ноль (скорей всего я плохо искал)

258
Первый вебсервер на Java [требует правки]

Первый вебсервер на Java [требует правки]

Здравствуйте!, Изучаю java и хочу научится писать вебсервер, в интуите нашел леции, но что то пока трудновато, помогите пожалуйста разобартся...

240