gpt4 book ai didi

java - 如何在 PreferenceActivity 中正确初始化静态变量

转载 作者:行者123 更新时间:2023-12-02 03:18:33 25 4
gpt4 key购买 nike

我有 Preference 类范围 PreferenceActivity。我在 Preference.class 中创建 public static Stringquality; 我在 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"))为什么质量变量为空?

最佳答案

原因是您在 Preference 类的 onCreate 方法中设置了 Preference.quality。因此,可能发生的情况是,当您在其他类中启动应用程序时,Preference.quality 将为 null,因为它从未初始化为任何内容。原因是其他类目前无法访问您的 Preference 类中的 onCreate 方法。 onCreate 在 Activity 启动时执行,但这似乎不会在代码中的任何地方发生。解决方案可能是在 onCreate 方法之外初始化 public static Stringquality,但仍在 Preference 类 内,

public static String quality = "QUALITY_HIGH";

@Override
public void onCreate(Bundle savedInstanceState) {
//insert code here
}

问题只是范围问题。

关于java - 如何在 PreferenceActivity 中正确初始化静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39933231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com