Получение метода из другого класса

238
09 мая 2017, 03:45

Дело, в том, что этот код я использую в одном классе. Но мне нужно еще в трех классах этот метод. Повторять коды везде, не правильно. Если в классе без унаследования от Activity, будут проблемы с getActivity() или getContext(), я думаю. Поэтому хотелось бы узнать, как правильно получить доступ к этому методы из разных классов?

    public String loadJSONFromAsset() {
        String json = null;
        try {
            InputStream is = getActivity().getAssets().open("cities_json.json");
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            json = new String(buffer, "UTF-8");
        } catch (IOException ex) {
            ex.printStackTrace();
            return null;
        }
        return json;
    }
Answer 1

Создаете класс, который занимается работой с JSON'ом, не забывайте про принцип единой ответственности. Потом экземпляр этого класса в классе, где хотите его использовать и используйте. Вот самый простой пример:

class JSONHelper {
    public String loadJSONFromAsset(Context context, String fileName) {
        try(InputStream is = context.getAssets().open(fileName)) {
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            return new String(buffer, "UTF-8");
        } catch (IOException e) {
            e.printStackTrace();
            //Опишите возвращение null в документации
            return null;
        }
    }
}

Потом в требуемом месте создаете экземпляр этого класса и используете:

class MainActivity extends AppCompatActivity {
    private JSONHelper mJsonHelper = new JSONHelper();
    ...
    @Override
    public void onCreate(Bundle savedInstanceState) {
        ...
        mJsonHelper.loadJsonFromAssets(this, "cities_json.json");
    }
}

Этот класс можно использовать в разных местах, при чем работать можно с контекстом, что намного удобнее контекса Activity.

READ ALSO
Как вывести результат работы в окно (графический интерфейс) - Java

Как вывести результат работы в окно (графический интерфейс) - Java

Вообщем есть кнопка и текстовое окно, по нажатии этой кнопки выполняется метод fr1watch(); НО, как сделать, чтобы результат работы этого метода...

228
Как правильно пользоваться паттерном PageObject

Как правильно пользоваться паттерном PageObject

Пытаюсь разобраться с паттерном Page object и возник вопрос: Пытаюсь автоматизировать тестирование сайта на котором есть

235
Проблема с подгрузкой картинки(ок) через uri, после рестарта приложения

Проблема с подгрузкой картинки(ок) через uri, после рестарта приложения

Uri сохраняется и изображения подгружаются через uri(через SharedPreferences), но эти изображения еще и должны сохранятся, что я делаю через uri

277
Cделать так, чтобы при отключении наушников ставилась пауза для музыки?

Cделать так, чтобы при отключении наушников ставилась пауза для музыки?

Есть приложение, которое воспроизводит через интернет радио потокиПрисутствуют кнопки, чтобы останавливать проигрывание и продолжать его

341