Исключение ясно.
Причина: java.lang.NullPointerException: попытка вызвать виртуальный метод
....
android.support.v7.app.AppCompatActivity.getResources (AppCompatActivity.java:542) на com.example.ankitrath.WordTrivia.Settings.read (Settings.java:37)
Он сообщает, что вы пытаетесьиспользуйте Context
, то есть null
.
Почему это null
?
Эта строка класса Settings
:
Scanner sc = new Scanner(getResources().openRawResource(R.raw.word2));
когда вы вызываете метод getResources()
как метод класса Settings
, это говорит нам о том, что класс Settings
расширяет класс Activity
.
Если это правда, вы должны изменить класс Settings
из наследования Activity
, чтобы сделать его, содержит Activity
как член класса Settings
.Например:
public class Settings {
private final Activity activity;
public Settings(Activity activity){
this.activity = activity;
}
...
}
Кроме того, вам нужно будет реорганизовать все вызовы, связанные с методами деятельности, такими как getResources()
, например:
Scanner sc = new Scanner(activity.getResources().openRawResource(R.raw.word2));
Это определенно вам поможет.Но, как я могу догадаться, класс Settings
- это реальная деятельность, которую вы, вероятно, используете в своем приложении, поэтому вам, вероятно, потребуется извлечь весь код, связанный с методом read()
, в отдельный класс.