Вызов ArrayList из другого метода

601
15 сентября 2017, 19:54

Добрый вечер!

Подскажите пожалуйста, как обратиться из метода Onclick(...) к ArrayList, который был создан в методе OnCreate(...)?

Пока сделал так:

OnCreate(...):

ArrayList<Integer> Arrayl = new ArrayList<>();
for (int a = 1; a < 8; a++) {
    Arrayl.add(a);
}
Collections.shuffle(Arrayl);// перемешиваем

в Onclick(...):

int actvopros= Arrayl.get(0); //и такое обращение не работает
Answer 1

Скорее всего Ваша проблема заключается в том, что коллекцию Arrayl Вы объявляете как локальную переменную метода OnCreate(...), которая вне этого метода видна не будет.

Для того, чтобы получить доступ к этой переменной из других методов (этого же класса), коллекцию Arrayl нужно объявить как поле класса:

public class MainActivity extends AppCompatActivity {
    private ArrayList<Integer> Arrayl;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Arrayl = new ArrayList<>();
        for (int a = 1; a < 8; a++) {
            Arrayl.add(a);
        }
        Collections.shuffle(Arrayl);
    }
}
Answer 2

Объявляй вне методов, инициализируй в OnCreate и используй где хочешь.

class A {    
    private ArrayList Arrayl;
    ...
    OnCreate {
    ...
    Array1 = new ArrayList<>() 
    ....
    }
    void B { Array1 будет видно. }
}

Вот так.

READ ALSO
Заполнение RecyclerView элементов из JSONObject

Заполнение RecyclerView элементов из JSONObject

Что делаю: Я получаю все JSONObjects с моего сервера через websockets в MainActivity и кладу их в ArrayList<JSONObject>:

386
Доступ к ListView из другого потока

Доступ к ListView из другого потока

Запускаю метод загрузки данных из БД из потока

380
Вылетает чат на firebase

Вылетает чат на firebase

Хочу освоить firebaseПриложение вылетает сразу же после запуска на телефоне

292
Узнать ID устройства по сокету (по IP)

Узнать ID устройства по сокету (по IP)

Есть сервер, запущенный на компьютере:

238