2016-10-08 86 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 
} 

的問題只是一個範圍的問題。