#java #android
#java #Android
Вопрос:
У меня есть класс предпочтений PreferenceActivity . Я создаю public static String quality;
в Preference.class я добавляю в onCreate
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref);
quality = "QUALITY_HIGH";//initialize
}
и добавьте в Preference.class этот метод
public void getQuality() {
if (keyquality.equals("480p")) {
quality = "QUALITY_LOW";
//
}
if (keyquality.equals("720p")) {
//
quality = "QUALITY_720P";
}
if (keyquality.equals("1080p")) {
//
quality = "QUALITY_HIGH";
}
}
в другом классе я создаю метод для получения моей переменной и установки настроек
private void getqualityvideo() {
/*if (Prefernce.quality == null) {
preferencecamrecoder = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
} else {*/
if (Prefernce.quality.equals("QUALITY_LOW")) {
preferencecamrecoder = CamcorderProfile.get(CamcorderProfile.QUALITY_LOW);
}
if (Prefernce.quality.equals("QUALITY_720P")) {
preferencecamrecoder = CamcorderProfile.get(CamcorderProfile.QUALITY_720P);
}
if (Prefernce.quality.equals("QUALITY_HIGH")) {
preferencecamrecoder = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
}
// }
}
Проблема:
при запуске приложения
private void startServes() {
btnStart = (ImageView) findViewById(R.id.StartService);
btnStart.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
v.startAnimation(mAnimationImage);
Intent intent = new Intent(MainActivity.this, RecorderService.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startService(intent);
changeCamera
.setEnabled(false);
btnStart.setEnabled(false);
setings.setEnabled(false);
moveTaskToBack(false);
}
});
}
в другом классе в методе
getqualityvideo() ошибка NullPointerException
ошибка в этой первой строке
, если (предпочтительно.quality.equals(«QUALITY_LOW»))
почему переменная качества пуста?
Комментарии:
1. сбой происходит при открытии вашего приложения, верно?
2. @Sujith Niraikulathan посмотрите, сбой, когда я запускаю службу, но если я инициализирую свою переменную в службе, приложение работает нормально
3. можете ли вы публиковать полные журналы?
Ответ №1:
Причина в том, что вы устанавливаете Preference.quality
onCreate
метод в своем Preference
классе. Итак, что, вероятно, происходит, так это то, что при запуске вашего приложения в другом классе Preference.quality
оно будет null, потому что оно никогда не было инициализировано ни для чего. Причина в том, что другой класс на данный момент не имеет доступа к onCreate
методу в вашем Preference
классе. onCreate
выполняется при запуске действия, но, похоже, этого нигде не происходит в вашем коде. Решением может быть инициализация public static String quality
вне вашего onCreate
метода, но все же внутри Preference class
,
public static String quality = "QUALITY_HIGH";
@Override
public void onCreate(Bundle savedInstanceState) {
//insert code here
}
Проблема была просто проблемой области видимости.