2012-01-14 4 views
0

Я пытаюсь создать свой собственный класс для чтения строк из файла, но это, похоже, проблема.Создать класс для чтения файлов

Из-за того, что я смог определить стандартные (Java) способы, не работает под Android. Мне нужно getResources() и так далее.

public myInput(Context context) throws FileNotFoundException{ 
    super(); 
    br = new BufferedReader(new InputStreamReader(context.getResources(). 
      openRawResource(R.raw.file))); 
} 

Это конструктор. Я пытаюсь создать его так.

public void choosePassword(Context context){ 
    try{ 
     myInput fromFile = new myInput(context); 
    } catch(Exception e){ 

    } 
} 

Metod choosePassoword() вызывается форма моего класса активность и честно не знаю, что он хочет для контекста. Я хочу дать метод selectPassword() файл, из которого он должен выбрать этот пароль, вот что я хочу ... может ли кто-нибудь помочь мне сделать именно это?

ответ

2

Activity является косвенным подклассом Context, поэтому вы можете просто использовать choosePassword(this) при вызове с Activity.

0

... честно говоря, не знаю, что он хочет для контекста

OK. Это очень важно понять в Android. Контексты являются основой, по которой практически все приложения взаимодействуют или даже имеют идентичность. Контекст по существу определяет, откуда возникла инструкция запуска компонента (это упрощение). Для запуска Android-компонента у него должен быть контекст для запуска. К счастью, в большинстве случаев контекст предоставляется для вас. Существуют два конкретных типа контекстов, к которым вы почти всегда имеете доступ:

  1. Каждая деятельность является контекстом. Этот метод подлежит вызову метода Lifecycle.

  2. Каждое приложение представляет собой контекст. Он находится за пределами жизненного цикла и инициализируется до того, как будет создан любой другой компонент приложения.

Оба эти могут быть использованы, если вам может понадобиться Контекст. Если вам нужен контекст приложения, вы можете получить его практически из любого компонента с помощью метода getApplication().

для ваших целей

Это делает ваши звонки довольно легко. Если все вызовы сделаны из вашей активности, тогда вы можете указать в качестве аргумента. Еще лучше, если сами методы являются частью вашей деятельности, вам необязательно передавать Контекст в качестве аргумента и снова, просто используйте this.

Из Важное примечание

Вы узнаете, что иногда легче получить один контекст или другой. Вы также узнаете, что иногда, хотя это может быть труднее, безопаснее использовать один Контекст над другим. Для этого я бы рекомендовал прочитать на Lifecycle Activity. Неправильное использование может привести к утечке памяти и небезопасному выполнению. В общем случае, если вам нужен Контекст для данных или выполнения, которые выживают только в Lifecycle, вы можете использовать Activity. Если вам нужен Контекст для данных или выполнения, которые происходят за пределами жизненного цикла, используйте приложение.

Во всяком случае, не означало написать книгу. Существует обширная информация о Contexts, о том, как использовать их и какие использовать. Конечно, прочитайте об этом. Это сделает вашу жизнь тонна проще.

Надеется, что это помогает,

FuzzicalLogic

+0

Спасибо, что помогло. Я пытался это прочитать. Но ваш курс крушения был на месте. В любом случае .. спасибо мельнице. –

+0

Нет проблем. Это часть того, о чем этот сайт. –