2016-10-08 13 views
0

私はPreferenceクラスエクステントPreferenceActivityを持っています。 私は私が私の変数とセットの設定PreferenceActivityで正しく静的変数を初期化する方法

を取得するためのメソッドを作成するの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"; 
    } 

} 

を追加Preference.classでpublic static String quality;を作成

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 誤差(Prefernce.quality.equals( "QUALITY_LOW"))であれば 品質変数が空である理由は?

+0

アプリケーションを開いたときにクラッシュが発生しています。 –

+0

@Sujith Niraikulathan サービスを開始するときにクラッシュするが、サービスで変数を初期化するとアプリケーションが正常に動作する – upward

+0

フルログを投稿することはできますか? –

答えて

2

PreferenceクラスのonCreateメソッドでPreference.qualityを設定しているのは、その理由です。おそらく起きていることは、他のクラスでアプリケーションを起動すると、Preference.qualityは何も初期化されていないため、nullになることです。その理由は、今のところPreferenceクラスのonCreateメソッドにアクセスする方法が他のクラスにないからです。 onCreateは、アクティビティが開始されたときに実行されますが、コード内のどこにも発生していないようです。解決策は、あなたのonCreate方法のpublic static String quality外を初期化することができ、それでもPreference class内、

public static String quality = "QUALITY_HIGH"; 

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

問題は、単にスコープの問題でした。

関連する問題