2016-10-08 1 views
0

Preference 클래스 Extent PreferenceActivity가 있습니다. 내가 Preference.class에 public static String quality;을 만들 내가 내 변수 및 설정 설정을 가져 다른 클래스에서 PreferenceActivity에서 고정 변수를 올바르게 초기화하는 방법

public void getQuality() { 
    if (keyquality.equals("480p")) { 
     quality = "QUALITY_LOW"; 
     // 

    } 
    if (keyquality.equals("720p")) { 
     // 
     quality = "QUALITY_720P"; 
    } 
    if (keyquality.equals("1080p")) { 
     // 
     quality = "QUALITY_HIGH"; 
    } 

} 

내가 만드는이 방법을 방법을
@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.pref); 
    quality = "QUALITY_HIGH";//initialize 
    } 

을에서 onCreate

에 추가하고 Preference.class에 추가

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이 초기화되지 않았기 때문에 null이 될 것입니다. 이유는 다른 클래스가 현재 Preference 클래스의 onCreate 메서드에 액세스 할 수있는 방법이 없습니다. onCreate은 활동이 시작될 때 실행되지만 코드에서 아무 것도 일어나지 않는 것 같습니다. 해결책은 문제는 단순히 범위 문제였다

public static String quality = "QUALITY_HIGH"; 

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

, 당신의 onCreate 방법 밖에 여전히 Preference classpublic static String quality를 초기화 할 수 있습니다.

관련 문제