我有Preference类范围PreferenceActivity。
我在Preference.class中创建了public static String quality;
我添加了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 第一行中的错误 if(Prefernce.quality.equals(“QUALITY_LOW”)) 为什么质量变量是空的?
答案 0 :(得分:2)
原因是您在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
}
这个问题只是一个范围问题。