如何在PreferenceActivity

时间:2016-10-08 13:54:36

标签: java android

我有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”)) 为什么质量变量是空的?

1 个答案:

答案 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
}

这个问题只是一个范围问题。