2016-10-08 50 views
0

我有喜好类范围PreferenceActivity。 我Preference.class创建public static String quality;我加入的onCreate如何在PreferenceActivity中正确初始化静态变量

@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()误差在该第一线 如果(Prefernce.quality.equals( “QUALITY_LOW”)) 为什么质量变量为空的NullPointerException 错误?

+0

当您打开您的应用程序时发生崩溃,对吧? –

+0

@Sujith Niraikulathan 看,崩溃,当我开始服务,但如果我初始化我的变量在服务,应用程序工作好 – upward

+0

你能发布完整的日志? –

回答

2

原因是您在Preference类中的onCreate方法中设置了Preference.quality。因此,可能发生的情况是,当您在其他课程中启动您的应用程序时,Preference.quality将为空,因为它从未初始化为任何内容。原因在于,目前为止,其他班级无法访问Preference课程中的onCreate方法。 onCreate在活动开始时执行,但似乎不会在代码中的任何位置发生。一个解决办法是初始化public static String qualityonCreate方法之外,但仍然在Preference class内,

public static String quality = "QUALITY_HIGH"; 

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

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